web-dev-qa-db-ja.com

clangでこの警告を無効にすることは可能ですか?警告:メインファイルに1回#pragma

警告:メインファイルに1回#pragma

部分的なASTを取得するために、clangを介してヘッダーを実行しています。

その警告を無効にすることは可能ですか?

17
kylawl

使用 -Wno-pragma-once-outside-headerコマンドライン引数。 Clangのドキュメントを参照してください ここ

10
W1M0R

コンパイルソースに誤ってヘッダーファイルをインクルードしたときにこの問題が発生しました(このヘッダーには#pragmaが1行あります)。これを修正するには、コンパイルソースからヘッダーを削除します(おそらく、.cppファイルに置き換える必要があります)

7
fnc12

「#pragmaoncein main file」には-Wオプションがないため、通常の方法でオフにすることはできません。 (ただし、Clang開発者は、-Wオプションのない警告は最悪であり、 new 警告 always get -Woptionsという一般的なルールがあることを十分に認識しています。 。 old コードのクリーンアップは、残念ながら、イライラしたユーザーの演習として残されています。)

シェルハッカリーを気にしないのであれば、いつでも次のようなことができます。

# This gives the warning...
clang -c myheader.h

# ...This doesn't.
echo '#include "myheader.h"' | clang -c -x c++-header -o myheader.h.gch -

末尾の-は、通常どおり、「stdinから読み取る」ことを意味します。 -x c++はClangに使用している言語を通知し( is ファイルがない場合はファイル拡張子から判断できないため)、c++c++-headerに変更すると、生成する必要があります.oファイルの代わりに.gchファイル。

このようにして生成された2つの.gchファイルは[〜#〜] not [〜#〜]ビットごとに同一です。 gchファイルについては、それらの動作について何が観察できるほど異なるかを説明するのに十分な知識がありません。ただし、気になるのはClangのASTだけなので、大丈夫だと思います。 :)

4
Quuxplusone

使用 -w(大文字のwではなく小文字のW)オプションを使用して、ソースをコンパイルし、そのような警告を抑制します。

1
Ravi Tiwari