此代码可以在 C: 中编译
#include <stdio.h>
int main()
{
printf("Hello World");
return 0;
printf("shouldnt allow this line");
return 1; //also this line
}
线路printf("shouldnt allow this line");
和return 1;
无法到达。有没有什么方法可以在编译过程中通过警告消息来检查这一点?另外,为什么编译器允许这样做?
最佳答案
无法访问的代码不是错误,因为:
它通常很有用,特别是作为宏扩展或函数的结果,这些宏扩展或函数仅以某种方式调用,由于某些参数是常量或仅限于特定范围而导致某些路径无法访问。例如,对于仅使用非负参数调用的
<isdigit
内联版本,EOF
参数的代码路径将无法访问。一般来说,判断代码是否不可达相当于停机问题。当然,像您这样的某些情况很容易确定,但您无法指定“无法访问代码的平凡情况是错误,但重要情况则不是”之类的内容。
关于c - C语言中有没有办法检查return后的语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47503735/