C++关键字volatile
2017-09-24 21:19
309 查看
http://www.cnblogs.com/yc_sunniwell/archive/2010/07/14/1777432.html
这说明这个 volatile 关键字发挥了它的作用。其实不只是“内嵌汇编操纵栈”这种方式属于编译无法识别的变量改变,另外更多的可能是多线程并发访问共享变量时,一个线程改变了变量的值,怎样让改变后的值对其它线程 visible。一般说来,volatile用在如下的几个地方:
1) 中断服务程序中修改的供其它程序检测的变量需要加volatile;
2) 多任务环境下各任务间共享的标志应该加volatile;
3) 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
然后,在 Debug 版本模式运行程序,输出结果如下:
i = 10
i = 32
然后,在 Release 版本模式运行程序,输出结果如下:
i = 10
i = 10
这是链接的效果,实测。。。并没有区别,都是10…
这说明这个 volatile 关键字发挥了它的作用。其实不只是“内嵌汇编操纵栈”这种方式属于编译无法识别的变量改变,另外更多的可能是多线程并发访问共享变量时,一个线程改变了变量的值,怎样让改变后的值对其它线程 visible。一般说来,volatile用在如下的几个地方:
1) 中断服务程序中修改的供其它程序检测的变量需要加volatile;
2) 多任务环境下各任务间共享的标志应该加volatile;
3) 存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
#include <stdio.h> void main() { int i = 10; int a = i; printf("i = %d", a); // 下面汇编语句的作用就是改变内存中 i 的值 // 但是又不让编译器知道 __asm { mov dword ptr [ebp-4], 20h } int b = i; printf("i = %d", b); }
然后,在 Debug 版本模式运行程序,输出结果如下:
i = 10
i = 32
然后,在 Release 版本模式运行程序,输出结果如下:
i = 10
i = 10
这是链接的效果,实测。。。并没有区别,都是10…
相关文章推荐
- 讲讲C++中的volatile关键字[转]
- 【c++】C语言中volatile关键字的作用
- C/C++中volatile关键字详解
- c++ 关键字: volatile
- C++ volatile 关键字
- C/C++ volatile关键字用法总结
- C/C++中volatile关键字详解
- C/C++中volatile关键字详解(转)
- C++基本功:全面掌握const、volatile和mutable关键字
- 讲讲C++中的volatile关键字
- C++关键字的详解 ---- volatile关键字
- 讲讲C++中的volatile关键字
- C/C++中volatile关键字详解
- [c/c++]关于volatile关键字的说明以及测试
- C/C++中volatile关键字详解
- C/C++中volatile关键字详解
- C++中 volatile关键字的作用
- C++ 语法 : volatile关键字详解
- C++关键字:mutable、volatile、explicit以及__based
- C/C++中volatile关键字详解