C语言之volatile、static、const、extern
1.volatile
1.1 volatile基本含义
volatile是一个类型修饰符(type specifier),是被设计用来修饰被不同线程访问和修改的变量;volatile的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接到内存中读值。
volatile防止代码被编译器优化,例如:
a=1;
a=2;
a=3;
编译器会进行优化,优化为只有a=3(即忽略前三条语句,只产生一条机器代码);如果键入volatile,则编译器会逐一地进行编译并产生相应的机器代码(产生四条代码)
volatile声明的变量是时刻都有可能变的,例如:volatile int a;a*a并不一定是a的平方。
1.2 volatile常见用途
volatile变量的几个例子:
1)并行设备的硬件寄存器(如:状态寄存器)
2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3)多线程应用中被几个任务共享的变量
1.3 volatile常见提问
1.一个参数既可以是c