volatile unsigned char; volatile有利于全局变量的实时更新,尤其含有中断中改变的量

转载 2016年06月02日 12:29:40

volatile unsigned char *pt; volatile是什么意思?

>;>; 每个变量都会被改变的啊!?
>;>; 那么在什么情况下才需要用volatile?

如果程序中的变量的值不仅仅取决于程序本身中的赋值,而且程序之外的东西,如系统中断、其它进程或线程等也能改变它的值的话,为了保证在使用
这个变量的值的时候,它的值始终是最“新”的,因此对此变量加 volatile 声明。volatile是一个类型指示符,告诉编译器不要对涉及到这个变量的地方
进行优化,如不要改变语句的排列顺序、不要把这个变量放到寄存器中(以加快程序的执行速度)等,防止读到的这个变量的值是一个无效的值(比如
是过去的一个拷贝值)。

对于一般程序中的变量,无须加 volatile 声明。
举报

相关文章推荐

在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存...

C中的volatile作用——在中断程序里修改全局变量

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

理解#define SREG (*(volatile unsigned char *)0x5F)

理解#define SREG (*(volatile unsigned char *)0x5F (2009-07-16 21:15)   理解#define SREG    (*(...
  • jinn3
  • jinn3
  • 2012-02-22 11:14
  • 3339

关于全局变量被修改以及volatile的用法

..... unsigned char num=0; ..... INTERRUPT() { .... num++; .... } void main() { out(num);...

[代码安全] 关于全局变量被修改以及volatile的用法

转载地址:http://blog.sina.com.cn/s/blog_5ddb672b0100hi0v.html 今天调一个程序的时候发现一个事情,就是全局变量在中断中被改变,代码...

作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量

作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量   作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了...

static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量

static 变量 作用域 全局变量 局部变量 外部变量 常量 volatile变量 2人收藏此文章, 我要收藏发表于2年前 , 已有1077次阅读 共2个评论 作用域...

作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量

作用域 全局变量 局部变量 静态变量 外部变量 常量 volatile变量   作用域: 作用域规则告诉我们一个变量的有效范围,它在哪儿创建,在哪儿销毁(也就是说超出了...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)