Chinaunix首页 | 论坛 | 博客
  • 博客访问: 182153
  • 博文数量: 48
  • 博客积分: 4060
  • 博客等级: 上校
  • 技术积分: 1080
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 23:24
文章分类

全部博文(48)

文章存档

2011年(1)

2010年(8)

2009年(2)

2008年(37)

我的朋友

分类: C/C++

2010-04-22 14:59:14

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) |
给主人留下些什么吧!~~