嵌入式
文章平均质量分 74
xumingjie1658
这个作者很懒,什么都没留下…
展开
-
vu32 volatile
查看一个单片机控制程序的时候,发现经常会用到:vu32这样一个数据类型。 很陌生。貌似C里面h没有这个数据类型。基本可以确定这个类型是为了适应ARM单片机的变成而typedef出来的。 查看stm32f10x.h,发现 typedef __IO uint32_t vu32; 显然,__IO和uint32_t也是typedef出来的。 继续追踪uint32_t发现:typedef unsi原创 2011-11-11 15:31:08 · 7274 阅读 · 0 评论 -
volatile在debug和release模式下的意义
Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 release可能因为优化过度,从而出现一些错误。 volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。转载 2011-11-11 17:08:47 · 1199 阅读 · 0 评论 -
volatile 的含义
volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以死代码消除。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化,volatile的字面含义是易变的,它有下面的作用: 1 不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至转载 2011-11-11 17:09:20 · 914 阅读 · 0 评论