您的位置:首页 > 编程语言 > C语言/C++

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说明,因为每次对它的读写都可能由不同意义;

#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…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: