我的头文件中定义了以下方法
unsigned char test(void);
实现:
unsigned char test()
{
unsigned char value = 0xFF;
return value;
}
当我这样调用它时:
unsigned char temp;
temp = test();
什么都没有返回???我用断点逐步完成它。在最后,变量值的值为 0xFF,但它永远不会返回到 temp?
我不习惯使用普通的旧 C...只使用 C++,方法的声明方式可能存在某种细微差别。
任何帮助将不胜感激!!!
最佳答案
我想你只是看到了一个聪明的编译器。如果您的变量在赋值后从未使用过,它就会被优化掉。不过,该函数仍会因其可能的副作用而被调用。
如果您将变量更改为全局变量,编译器无法知道您不会使用它,因此它会进行赋值。
我想如果你在赋值之后放置一个 printf
或者声明你的 tmp
变量 volatile
你会在调试器也是如此。
关于C - 函数不返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5398153/