我在头文件中定义了以下方法
unsigned char test(void);
Run Code Online (Sandbox Code Playgroud)
执行:
unsigned char test()
{
unsigned char value = 0xFF;
return value;
}
Run Code Online (Sandbox Code Playgroud)
当我用它调用它时:
unsigned char temp;
temp = test();
Run Code Online (Sandbox Code Playgroud)
没有返回??? 我用断点来介绍它.在最后,变量值的值为0xFF,但它永远不会返回到temp?
我不习惯简单的旧C ...只有C++,在声明方法方面可能会有某种细微的差别.
任何帮助将不胜感激!!!
我想你只看到一个聪明的编译器.如果在赋值后从未使用过您的变量,那么它就会被优化掉.尽管如此,仍然会调用该函数的可能副作用.
如果将变量更改为全局变量,则编译器无法知道您不会使用它,因此它会进行赋值.
我想如果你printf在作业之后加上一个或声明你的tmp变量,volatile你也会在调试器中观察它的作业.