当前位置:  技术问答>linux和unix

关于volatile的问题

    来源: 互联网  发布时间:2016-06-11

    本文导语:  写了这么一个程序来测试longjmp对于变量值的影响 按照书上说的,声明为volatile的变量的值应该不变(那句话本身就有点歧义,我也不知道是不是这么理解,所以写了这么一个程序),而一般int的值则是未定义的,大...

写了这么一个程序来测试longjmp对于变量值的影响
按照书上说的,声明为volatile的变量的值应该不变(那句话本身就有点歧义,我也不知道是不是这么理解,所以写了这么一个程序),而一般int的值则是未定义的,大家解释一下我的程序输出吧,说说volatile到底是什么语义?
#include
#include
#include

int main()
{
    volatile int i = 5;
    int j = 9;

    jmp_buf jmp;

    if(setjmp(jmp) == 0)
    {
printf("set jumpn");
i++;j++;
printf("first: i = %d,j = %dn",i,j);
    }
    else
    {
printf("now: i = %d,j = %dn",i,j);
return 1;
    }
    
    longjmp(jmp,1);
    
    
}


|
volatile 表示 告诉编译器 该变量 每次必须从内存中读 而不需优化 比如放在 寄存器里

比如 

int a = 1;

while(a)
{

}

的代码 

可能编译器生成的代码就是

while(1)
{

}

你的结果正常啊  有啥问题吗?

|
使用volatile类型变量cpu会从内存中读出来 强制刷新。一般在嵌入式编程中用的多

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.lang.model.element枚举modifier的类成员方法: volatile定义及介绍
  • 构造器也可以带public吗?volatile怎么用?
  • java命名空间java.lang.reflect类modifier的类成员方法: volatile定义及介绍
  • 新手请教 asm_volatile?
  • 请问:“volatile”是c语言的关键字么?有什么用处?
  • volatile的使用
  • __asm__ __volatile__("": : :"memory");啥意思啊?
  • asm volatile("incl %0":"+r"(b));是原子操作么。。。
  • volatile是不是只能用来修饰变量,如果想要禁止gcc对一段c代码进行优化该怎么办?
  • 请教volatile关键字的用法!!!
  • ”整型变量j说明为volatile,这样就阻止了优化程序除去循环语句“ 这么理解这句话,为什么会除去循环语句?
  • java多线程编程之慎重使用volatile关键字
  • C中的volatile使用方法
  • HTML标签参考手册 iis7站长之家
  • 探讨C语言中关键字volatile的含义
  • C语言中auto,register,static,const,volatile的区别详细解析
  • C语言中const,volatile,restrict的用法总结
  • 深入多线程之:内存栅栏与volatile关键字的使用分析


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3