演示反汇编中易失性和非易失性之间差异的简短说明性 C 程序是什么?
ie
int main()
{
volatile int x;
???
}
vs
int main()
{
int x;
???
}
我们可以用什么来代替两者???
这样生成的代码就不同了?
例如:
x = 0;
If x
is not volatile
,编译器会发现它没有被使用,并且可能会消除它(或者是x = 0;
语句甚至变量本身)完全来自生成的代码作为优化。
但是,那volatile
关键字是正是为了防止编译器这样做。它基本上告诉代码生成器“无论你认为这个变量是什么/做什么,不要再猜我,我需要它。”因此,编译器会将易失性变量视为已访问,并将发出与表达式相对应的实际代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)