C语言基础 — 关键字volatile有什么含意? 三个不同的例子。

关键字volatile有什么含意? 并给出三个不同的例子。

       一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。

→下面是volatile变量的几个例子:

1.并行设备的硬件寄存器(如:状态寄存器)
2. 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3. 多线程应用中被几个任务共享的变量

总结:
        最后一句话总结它:volatile关键字的主要用途是为了防止编译器优化告诉编译器,在使用它修饰的变量时,必须每次从内存中重新读值,而不是直接使用上一次从内存中加载到寄存器中的值。

面试心得:
        在面试中回答不出这个问题的人是不会被雇佣的。老师说过这是区分C程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile变量,不懂得volatile内容将会带来灾难。

猜你喜欢

转载自blog.csdn.net/weixin_50019298/article/details/114445813