就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。

就像大家更熟悉的const一样,volatile是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。
 
#include <stdio.h>
#include <setjmp.h>
#include <stdlib.h>

static jmp_buf  buf; 
int main()    
{ 
    volatile  int b;
    //对于volatile类型的变量,系统每次用到他的时候都是直接从对应的内存当中提取,
    //而不会利用cache当中的原有数值,以适应它的未知何时会发生的变化,
    //系统对这种变量的处理不会做优化——显然也是因为它的数值随时都可能变化的情况。 
    b =3; 
    if(setjmp(buf)!=0)   
    { 
        printf("%d ", b);   
        exit(0); 
    } 
    b=5; 
    longjmp(buf , 1); 
    return 0;
}  
/*1.setjmp(j)设置“jump”点,用正确的程序上下文填充jmp_buf对象j。
这个上下文包括程序存放位置、栈和框架指针,其它重要的寄存器和内存数据。
当初始化完jump的上下文,setjmp()返回0值。   
2. 以后调用longjmp(j,r)的效果就是一个非局部的goto或“长跳转”到由j描述的
上下文处(也就是到那原来设置j的setjmp()处)。
当作为长跳转的目标而被调用时,setjmp()返回r或1(如果r设为0的话)。
(记住,setjmp()不能在这种情况时返回0。)   
通过有两类返回值,setjmp()让你知道它正在被怎么使用。
当设置j时,setjmp()如你期望地执行;但当作为长跳转的目标时,
setjmp()就从外面“唤醒”它的上下文。你可以用longjmp()来终止异常,
用setjmp()标记相应的异常处理程序。*/ 

这个题目跟volatile关键字没有关系~volatile主要用在多线程里面,我是学c++的,不知道c里面是不是也是这样的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值