- ベストアンサー
指定した範囲での警告をなくすには・・・
突然ですが質問です。 C++のプログラムのある範囲で警告が多発してしまいました。 プログラムは問題なく起動し実行されるのですが、コンパイルするたびに警告がたくさん出るのは見づらいのでどうにかならないでしょうか? #pragmaとか使うんでしょうか・・・ よく分からないのでどなたか回答をお願いしますm(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
>どうにかならないでしょうか なります。最も単純なのは、コンパイラオプションで警告レベルを下げてコンパイルする事です。あまりお勧めできません。有益な警告も抑制される可能性が高い為です。 >#pragmaとか使うんでしょうか コードの塊毎に、任意の警告を抑えたい時に使います。例えばVC(MS)C++の場合、下記のような感じです。 #pragma warning( push ) // 既存の警告状態を保存 #pragma warning( disable:? ) // ?番の警告を抑制 // ここに警告抑制対象のコードがある。 // 他社製(コードを直接いじるのが好ましくない)ヘッダを#include時、警告が大量発生する事もある。 // その時は泣く泣くここに#includeする。 #pragma warning( pop ) // 保存した警告状態を復元 私はコンパイラオプションの警告レベルを最強にし、必要に応じて#pragmaで消す方法を採っています。
その他の回答 (2)
まず、警告の意味を調べて、出ないようにプログラムを修正するべきです。 表面上は問題なく動いていても、結果として正しく処理できていない可能性があります。 警告は「黄色信号」と同じで、無視したり強引に回避したりしてはいけません。 もし、genki140さんが技術を向上したいとお思いなのでしたら、プログラムの修正によって警告を取り除くようにしてください。
- jacta
- ベストアンサー率26% (845/3158)
詳しい状況が全く分かりませんが、コマンドラインコンパイラであれば、警告を表示させないようにするには、標準出力または標準エラー出力をnullファイルにリダイレクトすればよいかと思います。 それはそうと、それらの警告は無視しても差し支えないことを確認されたのでしょうか? 実際に問題があって警告が出ているのであれば、警告メッセージを抑止するのではなく、該当箇所を修正するのが筋かと思います。
お礼
有効的な解決法を教えていただきありがとうございます。 教えていただいたとおり、pragmaでやってみましたところ、警告が出なくなりました。 やはり、警告を弱くするというのはほかのところの警告も出なくなってしまい不安なので、このやり方で行きたいと思います。 ありがとうございましたm(_ _)m