[英]Why unreachable code isn't an error in C++?
无法访问的代码是 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';
}
编译器不应该在这个程序中抛出错误,因为函数 f() 中的 return 语句之后的语句永远不会被执行吗? 允许不可达代码的原因是什么?
无法访问的代码不是 C++ 中的编译错误,但通常会发出警告,具体取决于您的编译器和标志。 如果在检测到无法访问的代码时编译器停止,那么调试代码的选项就会减少,因为您还必须手动删除不必要的代码。
警告而不是错误是有意义的。 很高兴提到它,因为人们可能无意中将旧代码抛在了后面,但无论如何都没有理由不编译。
无法访问的代码是一个警告,因为它不需要是一个错误,此外,它并不总是很容易避免。
此外,如果您希望这是一个错误,GCC 和 Clang 支持-Wunreachable-code
,因此您可以使用-Werror=unreachable-code
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.