c++ - 为什么无法访问的代码在 C++ 中不是错误?

标签 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';
}

编译器不应该在此程序中抛出错误,因为函数 f() 中 return 语句之后的语句将永远不会执行吗?允许无法访问的代码的原因是什么?

最佳答案

Unreachable code 在 C++ 中不是编译错误,但通常会给出警告,具体取决于您的编译器和标志。如果编译器在检测到无法访问的代码时停止,那么调试代码的选项就会减少,因为您还必须手动删除不需要的代码。

警告而不是错误是有意义的。提到它很好,因为人们可能会无意中留下旧代码,但没有理由不编译。

关于c++ - 为什么无法访问的代码在 C++ 中不是错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30457156/

相关文章:

c++ - Unix - 防止内存消耗失控导致 PC 崩溃?

c - 什么是 *ABS* 部分以及何时使用?

c - 多维阵列打印给出了不同的东西

c++ - C++中的foreach算法

c++ - C/C++ 中的自展开宏循环

java - 如果我使用多个 catch block ,为什么 java 没有检测到无法访问的 catch block ?

c++ - 为什么我可以编译有 2 个返回的代码?

c# - 为什么我的foreach中的代码无法访问? (经过单元测试的工作代码的精确副本)

C++构造函数和析构函数顺序

ios - 如何通过 Xcode 6 构建 iOS 的 C 库?