凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 91426
  • 博文数量: 150
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 977
  • 用 户 组: 普通用户
  • 注册时间: 2022-03-12 10:39
个人简介

不积小流,无以成江海。

文章分类

全部博文(150)

文章存档

2024年(10)

2023年(50)

2022年(90)

我的朋友
相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: c/c

2022-04-10 21:56:13

网上一些总结:volatile关键字-凯发app官方网站

本意是“易变的”,因为访问寄存器要比访问内存单元快的多,所以编译器一般都做减少存取内存的优化。

加了这个修饰后,系统总是重新从它所在的内存读取数据。

volatile关键词影响编译器编译的结果。因为volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。

本质

编译器的优化

volatile解释为“直接存取原始内存地址”比较合适,

使用场景

1、  中断服务程序中修改的供其他程序检测的变量需要加volatile

例如:

static int i = 0;

int main(void)

{

while(1) {

    if (i) dosomething();

}                           

}

/* interrupt service routine*/

void isr_2(void)

{

  i = 1;

}

2、  多任务环境下各任务间共享的标志应该加volatile

3、  存储器映射的硬件寄存器通常也要加volatile

几个问题

1、一个参数可以是const,还可以是volatile吗?

可以的。例如,只读的状态寄存器。

它是volatile,因为它可能被意想不到地改变;

const,因为程序不应该试图是修改它。

2、一个指针可以是volatile吗?

可以,当一个中断子程序修改一个buffer的指针时。

注意

频繁volatile很可能增加代码尺寸和降低性能,因此,要合理使用volatile

阅读(298) | 评论(0) | 转发(0) |
0

上一篇:cpu的实模式和保护模式(一)

下一篇:

给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图