C - 函数不返回值?

标签 c

我的头文件中定义了以下方法

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/

相关文章:

c - 标准头文件/库中是否包含守卫?

c - 如何将 STDIO.H 库函数与严格的系统调用交换?

c - 汇编程序 .weak 指令仅适用于交叉编译 GCC

c - 将int存储在C中的char数组中

c - 我无法让循​​环循环 20 次并要求输入 1 到 6 之间的数字。任何人都可以看到我编码错误的地方吗?

c - 使用 qsort 报告结构数组中的重复项?

c - 倒带(文件指针)然后 fwrite。 fwrite 不会覆盖文件内容吗? C

c - 函数指针使用中的不兼容指针类型分配

c - 如何找到数组中大于其后所有元素的元素数?

c 将多个参数传递给线程