网上做打字任务的网站,erp企业管理系统平台,网站三要素关键词 描述怎么做,建设企业网站需要了解什么volatile字面翻译为不稳定的#xff0c;易变的。 一般编译器优化时#xff0c;如果一个数据已经读取进寄存器#xff0c;后续会优先从寄存器中取值来减少访问存储时间#xff0c;但如果此数值会随时变动#xff0c;结果就会出现错误 以下测试
#include stdio.h
i…volatile字面翻译为不稳定的易变的。 一般编译器优化时如果一个数据已经读取进寄存器后续会优先从寄存器中取值来减少访问存储时间但如果此数值会随时变动结果就会出现错误 以下测试
#include stdio.h
int main()
{const int v 0;int *vp (int*) v; int tmp v;*vp 1;printf(%d %d\n,tmp,v);
} 对比一级优化输出
gcc test.c
./a.out
0 1
gcc -O1 test.c
./a.out
0 0可以看出不优化和优化时结果并不相同。 添加volatile关键字后
#include stdio.h
int main()
{volatile const int v 0;int *vp (int*) v; int tmp v;*vp 1;printf(%d %d\n,tmp,v);
} 三级优化输出
gcc -O3 test.c
./a.out
0 1所以对多线程或常变的数据包括寄存器声明volatile明确靠诉编译器此数据不需优化每次从原位取值。