读书人

想眼界见识volatile的魅力

发布时间: 2013-04-20 19:43:01 作者: rapoo

想见识见识volatile的魅力
就是想看看有volatile和无它的不同,就小试了一下:
想眼界见识volatile的魅力
想眼界见识volatile的魅力

不我更想看到的是这种的,让编译器给它优化掉,然后出错误,但是输出的还是6,5。以前看代码也看到有主动加volatile,但是记忆不深刻就想见识见识没有它,出错误的例子。

//hello.c
#include <stdio.h>

int a = 6;

int main()
{


//int a = 6;


printf("a = %d\n", a);

change_a();

printf("a = %d\n", a);


return 0;
}

//hello2.c
extern a;

void change_a(void)
{
int *p = &a;
*p = 5;
}



编译优化选项用的是-O2。这个只能意会不能看到效果吗?编译器要想很聪明,我骗不了它。 性能优化 编译器
[解决办法]
都没有多线程, 你怎么测试 volatile 的效果....
编译器的优化肯定是在不影响程序正确性的前提下进行的, 否则还得了.
[解决办法]
你貌似还没有领悟到volatile的魅力,设计一个关键字,就是为了在调试的时候能在调试器里看到值?你以为会这么简单?
[解决办法]
和register结合起来,有助于理解。
[解决办法]
别想太多了 这么编译器怎么优化 结果都只会是 6 5
如果编译器优化结果不是 6 5
那么你可以提交一个BUG了

读书人网 >C语言

热点推荐