C 语言 volatile 关键字
《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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具