c语言中 volatile _Bool 关键字说明
时间:10-02
整理:3721RD
点击:
这个帖子送给没有太多实践经验的人,如果是大神,请跳过
首先 _Bool 是C99新增的一个,用法和bool一样, 如下图: 虽然故意初始化为2,但是下边变量显示的值为1;
然后为什么我要用 volatile 关键字呢?
volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些代码。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化。
如果我去掉 这个关键字,如下图: (在编译是会显示一个警告,temp 定义了但是未使用),且编译器会将这个变量给优化掉.
之前做项目时,由于牵涉到好几个临时变量的计算, 但是可恶的是有时候编译器会把那几条语句"优化掉",导致程序不正常,
所以有了这个关键字后,妈妈再也不用担心我的优化 !
(相识恨晚啊,之前没好好看书,没发现这个变量)
首先 _Bool 是C99新增的一个,用法和bool一样, 如下图: 虽然故意初始化为2,但是下边变量显示的值为1;
然后为什么我要用 volatile 关键字呢?
volatile总是与优化有关,编译器有一种技术叫做数据流分析,分析程序中的变量在哪里赋值、在哪里使用、在哪里失效,分析结果可以用于常量合并,常量传播等优化,进一步可以消除一些代码。但有时这些优化不是程序所需要的,这时可以用volatile关键字禁止做这些优化。
如果我去掉 这个关键字,如下图: (在编译是会显示一个警告,temp 定义了但是未使用),且编译器会将这个变量给优化掉.
之前做项目时,由于牵涉到好几个临时变量的计算, 但是可恶的是有时候编译器会把那几条语句"优化掉",导致程序不正常,
所以有了这个关键字后,妈妈再也不用担心我的优化 !
(相识恨晚啊,之前没好好看书,没发现这个变量)