英語版
このページの英語版を見る

警告

見方によっては、警告は 言語設計の欠陥の症状であるか、あるいはコードを分析し潜在的な問題箇所を探すのに便利な「lint」のようなツールである。 ほとんどの場合、これらの問題箇所は、 そのように意図された正当なコードである。さらにまれなケースとして、 プログラマーの意図しないエラーを示す場合もある

警告はプログラミング言語 D の定義された部分ではない。 警告はコンパイラベンダーの裁量で存在し、 おそらくベンダーごとに異なるだろう。 実装が警告メッセージを生成する可能性のあるすべての構文は、 D言語の合法なコードである。

これは、Digital Mars Dコンパイラが-w スイッチがスローされた際に生成する警告である。このモードでは、 警告が発生した場合、コンパイラが強制的に停止する。 ほとんどの警告については、警告とすべきかエラーとすべきか、 また、このような状況下でDコードを正しく記述する方法が 何かについて、活発な議論が交わされている。コンセンサスが得られていないため、 これらはオプションの警告として表示され、 正しいコードを記述する方法が提示される。

警告 - 文に到達できない

次のコードを考えてみよう。

int foo(int i)
{
    return i;
    return i + 1;
}

2番目のreturn文は到達不可能であり、つまりは死んだコードである。 リリースされたコードでは死んだコードは好ましくないが、 正当な 理由で

この警告は、以下の方法で解決できる。

  1. コメントアウト機能を使って、不要なコードをコメントアウトする。 +/コメント:
    int foo(int i)
    {
        return i;
        /+
            return i + 1;
         +/
    }
    
    死んだコードをxml-ph-0000@deepl.internal条件文内に置く:
  2. デッドコードをversion(none) 条件文内に置く:
    int foo(int i)
    {
        return i;
        version (none)
        {
            return i + 1;
        }
    }
    
    リリースビルドを行う際には、警告を有効にしてコンパイルする。
  3. リリースビルドを行う場合のみ、警告を有効にしてコンパイルする。