《C Primer Puls》 是这样解释关键字的:关键字是C语言的词汇,由于编译器不具备真正的智能,所以你必须用编译器能理解的术语表示你的意图。
volatile
关键字告诉编译器该变量是易变的,无非就是希望编译器去注意该变量的状态,时刻注意该变量是易变的,每次读取该变量的值都重新从内存中读取。
使用GCC编译器时,在编译命令加入 -On
; n
: 0 ~ 3,数字代表优化等级,数字越大,优化级别越高。
例如:
gcc -O2 -O hello hello.c
使用 O2 优化级别编译 hello.c
使用GCC编译器生成汇编gcc -S -o main.s mian.c
点击查看代码
int i = 10;
int main(void){
int a, b;
a = i;
...//伪代码,里面不含有对 a 、 b 以及 i的操作
b = i;
if(a == b){
printf("a = b");
}
else {
printf("a != b");
}
return 0;
}
点击查看代码
int i = 10;
int main(void){
int a, b;
a = i;
...//伪代码,里面不含有对 a 、 b 以及 i的操作
b = i;
printf("a = b");
return 0;
}
-
i 是其他子线程与主线程共享的全局变量,其他子线程有可能修改 i 值;
-
i 是中断函数与主函数共享的全局变量,中断函数有可能修改 i 值;
-
i 属于硬件寄存器,CPU可能通过硬件直接改变 i 的值(例如寄存器的标志位)
————————————————
版权声明:本文为CSDN博主「ora___」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38815998/article/details/102840096