警告:メインファイルに1回#pragma
部分的なASTを取得するために、clangを介してヘッダーを実行しています。
その警告を無効にすることは可能ですか?
使用 -Wno-pragma-once-outside-header
コマンドライン引数。 Clangのドキュメントを参照してください ここ 。
コンパイルソースに誤ってヘッダーファイルをインクルードしたときにこの問題が発生しました(このヘッダーには#pragmaが1行あります)。これを修正するには、コンパイルソースからヘッダーを削除します(おそらく、.cppファイルに置き換える必要があります)
「#pragmaoncein main file」には-W
オプションがないため、通常の方法でオフにすることはできません。 (ただし、Clang開発者は、-W
オプションのない警告は最悪であり、 new 警告 always get -W
optionsという一般的なルールがあることを十分に認識しています。 。 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だけなので、大丈夫だと思います。 :)
使用 -w
(大文字のw
ではなく小文字のW
)オプションを使用して、ソースをコンパイルし、そのような警告を抑制します。