[解決済み】GCCの警告を(文字通り)すべてオンにする方法は?
質問
を有効にしたいのですが、文字通り すべて GCCが持つ警告の (簡単だと思うでしょうけど...)
-
あなたはこう思うでしょう
-Wall
しかし、そうではありません。まだ-Wextra
. -
と思うでしょう。
-Wextra
しかし、そうではありません。リストアップされた警告のすべてが ここで (例えば-Wshadow
) が有効になっています。そして、このリストが包括的であるかどうかは、まだわかりません。
GCCに有効にするよう指示するにはどうしたらよいでしょうか(if, and, or but'sはなし!) すべて 警告を表示しますか?
解決方法は?
無理です。
GCC 4.4.0のマニュアルはそのバージョンについてだけ包括的ですが、4.4.0について考えられるすべての警告をリストアップしています。それらはあなたがリンクしたページにすべてあるわけではありません。たとえば、いくつかの言語固有のオプションはC++オプションやObj-Cオプションのページにあります。例えば、いくつかの言語固有のオプションは C++ のオプションや Obj-C のオプションのページにあります。 オプションの概要
をオンにする
すべて
を含めると
-Wdouble-promotion
を実装している 32 ビット単精度浮動小数点演算ユニットを持つ CPU にのみ関係します。
float
をハードウェアでエミュレートしています。
double
ソフトウェアで として計算を行う
double
を使うと、ソフトウェアエミュレーションを使うことになり、遅くなる。 これは一部の組み込み用CPUには関係しますが、64ビット浮動小数点をハードウェアでサポートする最新のデスクトップ用CPUには全く関係ありません。
また、通常は役に立たない警告として
-Wtraditional
これは、従来の C 言語では異なる意味を持つ (あるいは動作しない) 完全に整ったコードについて警告するもので、たとえば
"string " "concatenation"
またはISO Cの関数定義です。 30年前のコンパイラとの互換性を本当に気にしているのか?を書くと警告が出るのが本当にいいのでしょうか?
int inc(int i) { return i+1; }
?
私が思うに
-Weffc++
はノイズが多すぎて使い物にならないし、時代遅れの初版の
エフェクティブ C++
を初期化していないことを警告されたくはありません。
std::string
このコンストラクタは、私が望むことを正確に実行するデフォルトのコンストラクタを持っています。
m_str()
を呼び出すことができますか? その
-Weffc++
のような警告は、コンパイラが正確に検出するのが難しすぎる(偽陰性を与える)し、すべてのメンバーを明示的に初期化するような有用ではない警告は、ノイズが多すぎて偽陽性を与えてしまうだけです。
Luc Dantonは
素晴らしい例
からの無駄な警告の
-Waggregate-return
これは、C++のコードではほとんど意味をなさないものです。
つまり、本当に必要なのは すべて の警告が表示されることがありますが、これは自分がそう思っているだけです。
マニュアルに目を通し、それらについて読み、どれを有効にするかを決め、試してみてください。 コンパイラのマニュアルを読むのは良いことです。 TM とにかく、理解できない警告を短絡的に有効化することは、特にRTFMの必要性を回避するためであれば、あまり良いアイデアではありません。
をオンにするだけの人は すべて というのは、おそらく何も知らないからか、髪の尖った上司が「警告を出すな」と言ったか、どちらかでしょう。
編集する こちらもご覧ください -Wall-all はすべての警告を有効にします。 として閉じられているWONTFIX。
2を編集します。
DevSolarから、コンパイラのバージョンによってmakefileが異なる警告を使う必要があるという苦情を受けて、もし
-Wall -Wextra
を使えば、コンパイラ固有のCFLAGとバージョン固有のCFLAGを使うことは難しくありません。
compiler_name := $(notdir $(CC))
ifeq ($(compiler_name),gcc)
compiler_version := $(basename $(shell $(CC) -dumpversion))
endif
ifeq ($(compile_name),clang)
compiler_version := $(shell $(CC) --version | awk 'NR==1{print $$3}')
endif
# ...
wflags.gcc.base := -Wall -Wextra
wflags.gcc.4.7 := -Wzero-as-null-pointer-constant
wflags.gcc.4.8 := $(wflags.gcc.4.7)
wflags.clang.base := -Wall -Wextra
wflags.clang.3.2 := -Weverything
CFLAGS += $(wflags.$(compiler_name).base) $(wflags.$(compiler_name).$(compiler_version))
関連
-
[解決済み】C++でint型に無限大を設定する
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++ 式はポインタからオブジェクトへの型を持っている必要があります。
-
[解決済み】文字列関数で'char const*'のインスタンスを投げた後に呼び出されるterminate [閉店].
-
[解決済み] ipython のすべての警告を隠す
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] 1ビットのセット、クリア、トグルはどのように行うのですか?
-
[解決済み] チェックされていないキャストの警告に対処するにはどうすればよいですか?
-
[解決済み】なぜ常にコンパイラの警告を有効にしなければならないのですか?
-
[解決済み】Rustで未使用のコードの警告を無効にする方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++でランダムな2倍数を生成する
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み] 既に.objで定義されている-二重包含はない
-
[解決済み】浮動小数点例外エラーが発生する: 8
-
[解決済み】C++の余分な資格エラー
-
[解決済み】クラステンプレートの使用にはテンプレート引数リストが必要です
-
[解決済み】CMakeエラー at CMakeLists.txt:30 (project)。CMAKE_C_COMPILER が見つかりませんでした。
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み】変数やフィールドがvoid宣言されている