Des*_*tor 3 c c++ unreachable-code
无法访问的代码是Java等语言中的编译时错误.但为什么它只是在C++和C中发出警告?考虑以下示例:
#include <iostream>
int f()
{
int a=3;
return a;
int b=6; // oops it is unreachable code
std::cout<<b; // program control never goes here
}
int main()
{
std::cout<<f()<<'\n';
}
Run Code Online (Sandbox Code Playgroud)
不应该编译器在这个程序中抛出一个错误,因为函数f()中的return语句之后的语句永远不会被执行?允许无法访问代码的原因是什么?
byt*_*e77 13
无法访问的代码在C++中不是编译错误,但通常会发出警告,具体取决于您的编译器和标志.如果在检测到无法访问的代码时编译器停止,则调试代码的选项会更少,因为您还必须手动删除不必要的代码.
警告而不是错误是有道理的.提到它是好事,因为人们可能无意中遗留了旧代码,但无论如何都没有理由不进行编译.
无法访问的代码是一个警告,因为它不一定是错误,而且它并不总是很容易避免。
此外,如果你希望这是一个错误,GCC 和 Clang 支持-Wunreachable-code,所以你可以使用-Werror=unreachable-code