我使用IAR (版本: 6.60.1.5104)来运行我的C项目。
我看到了一种奇怪的行为。
在调试时,我获得了一个在本地定义为zero的变量的值
例如:
int a = 0但对于赋值为非零值的变量,则为<available>。
我在下面提到了一个代码片段:
int someFun():
{
int32_t a = 0; //IAR says it <unavailable>
int32_t b = 1;
printf("%d%d", a,b);
}这种情况一直在发生。请帮帮忙
发布于 2014-11-25 17:33:17
这可能只是意味着变量已经被优化掉了,即当程序运行时没有变量。由于变量的值永远不会改变,优化编译器可以随意删除它,只需让printf()调用直接使用这些值即可。
反汇编程序以查看调用是如何生成的。
研究如何为您的特定编译器禁用编译器优化(请阅读文档)。
https://stackoverflow.com/questions/27123017
复制相似问题