まず第一に、私はあなたに同意します、あなたはすべての警告を取り除く必要があります。あなたが得る小さな警告ごとに、問題を修正することによってそれを取り除きます。
再読すると、暴言のように見えるものに進む前に、このようなコードを使用してもパフォーマンスが低下することはないように思われることを強調しておきます。Reflectorを使用してコードを調べたところ、到達不能として「フラグが立てられた」コードは、実際には出力アセンブリに配置されていないようです。
ただし、コンパイラによってチェックされます。これだけでも、私の暴言を無視するのに十分な理由かもしれません。
言い換えれば、その警告を取り除くことの正味の効果はまさにそれであり、あなたは警告を取り除くのです。
また、この回答は意見であることに注意してください。あなたは私の意見に同意しないかもしれません、そして#pragma
警告メッセージを隠すために使用したいと思うかもしれませんが、少なくともそれが何をするかについて情報に基づいた意見を持っています。もしそうなら、誰が私の考えを気にします。
そうは言っても、なぜ到達できないコードを書いているのですか?
「defines」の代わりにconstsを使用していますか?
警告はエラーではありません。あなたにとって、そのコードの一部を分析し、あなたが正しいことをしたかどうかを理解することはメモです。通常、あなたはしていません。特定の例の場合、特定の構成では実行されないコードを意図的にコンパイルしています。
なぜコードがそこにあるのですか?実行されることはありません。
「一定」という言葉が実際に何を意味するのか混乱していますか?定数とは、「これは決して変わらない、そしてあなたがそう思うなら、それは定数ではない」という意味です。それが定数です。変更することはなく、変更することも、変更するべきではありません。これまで。
コンパイラはこれを認識しており、定数のために実行されることのないコードがあることを通知します。これは通常、エラーです。
その定数は変わるのでしょうか?もしそうなら、それは明らかに定数ではありませんが、出力タイプ(Debug、Release)に依存するものであり、「#define」タイプのものなので、それを削除して、代わりにそのメカニズムを使用してください。これにより、コードを読んでいる人にとって、この特定のコードが何に依存しているかが明確になります。Visual Studioは、定義を設定しない出力モードを選択した場合にもコードをグレー表示するので、コードはコンパイルされません。これは、コンパイラ定義が処理するために作成されたものです。
一方、定数が変更されない場合は、何らかの理由でコードを削除すると、コードは必要なくなります。
いずれにせよ、そのコードの警告を無効にするだけの簡単な修正の餌食にならないでください。これは、腰痛の問題を「修正」するためにアスピリンを服用するようなものです。これは短期的な修正ですが、問題を覆い隠します。代わりに根本的な問題を修正してください。
この答えを終えるために、私はあなたの問題に対して全く異なる解決策がないかどうか疑問に思っています。
多くの場合、「到達不能コードが検出されました」という警告が表示されるコードは、次のいずれかのカテゴリに分類されます。
const
コンパイラとの(私の意見では)間違った使用法#define
。基本的にコンパイラに「このコードは、使用されないことがわかっている場合でも、コンパイルしてください。」と言います。
- 間違っている、のように、スローとブレークの両方を含むcase-blockを持つswitch-caseのように、まったく間違っています。
- 後続のコードを削除(またはコメントアウト)するのではなく、ある時点でリターンを追加することによってメソッドを短絡した、前の反復からの残りのコード。
- 一部の構成設定に依存するコード(つまり、デバッグビルド中にのみ有効)。
あなたが持っているコードが上記の設定のいずれにも当てはまらない場合、あなたの定数が変わる特定のケースは何ですか?それを知っていると、それを処理する方法についてのあなたの質問に答えるより良い方法が得られるかもしれません。