6

到達不能コードは、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 ステートメントの後のステートメントは決して実行されないため、コンパイラーはこのプログラムでエラーをスローすべきではありませんか? 到達不能コードを許可する理由は何ですか?

4

2 に答える 2

16

到達不能コードは C++ のコンパイル エラーではありませんが、コンパイラとフラグによっては、通常は警告が表示されます。到達不能なコードが検出されたときにコンパイラが停止した場合、不要なコードを手動で削除する必要があるため、コードをデバッグするためのオプションが少なくなります。

エラーの代わりに警告が表示されます。意図せずに古いコードを置き去りにする可能性があると言及されているのは良いことですが、とにかくコンパイルしない理由はありません.

于 2015-05-26T11:28:01.587 に答える