auto, register, static, volatile, extern

1、auto

这个关键字用于声明变量的生存期为自动,即将不再任何类、结构、枚举、联合和函数中定义的变量为全局变量,而在函数中定义的变量为局部变量。这个关键字一般不写,因为默认的就是自动的。

2、registr

被这个关键字修饰的变量,编译器会将变量存在cpu内部寄存器而不是通过 内存寻址从而提高处理效率。

3、static

static主要有以下3个用法:
1)修饰函数体中的变量。
此时该变量在函数下一次调用时会维持上一次的值保持不变,因为被static修饰的局部变量(同全局变量一样存储在全局静态存储区)只会初始化一次;
2)修饰全局变量。
被static修饰的全局变量只能被本模块(即当前文件)中的函数调用。
3)修饰函数
被static修饰的函数只能被本模块中的其他函数调用。

4、volatile

被volatile修饰的变量表明该变量可能会被意想不到地改变。优化器在用到这个变量时必须每次重新小心的读取这个变量的值,而不是使用保存在寄存器中的备份(由于cpu访问寄存器的速度要快过RAM,所以编译器都会做减少存取外部RAM的优化)。

5、extern

即外部的,即在别的模块中定义的变量或函数,可以通过extern声明变量或函数从而调用。不过一般是在.h中声明,然后在需要调用对应变量或函数中的文件中引或用这个.h文件。

你可能感兴趣的:(单片机,嵌入式)