volatile关键字是一种类型修饰符,用它声明的类型变量表示可以被某些编译器未知的因素更改
,比如:操作系统、硬件或者其它线程等。遇到这个关键字声明的变量,编译器对访问该变量的
代码就不再进行优化,从而可以提供对特殊地址的稳定访问。
int _tmain(int argc, _TCHAR* argv[])
{
volatile int i=10;
//int i = 10;
int a = i;
printf("i= %d\n",a);
//下面汇编语句的作用就是改变内存中i的值,但是又不让编译器知道
__asm
{
mov dword ptr [ebp-4], 20h
}
int b = i;
printf("i= %d\n",b);
}
|
没有使用volatile的时候,我的vs2008编译器在debug和release下输出都是10
使用volatile的时候,我的vs2008编译器在debug版本下输出10,10;release版本下输出10,32
阅读(560) | 评论(0) | 转发(0) |