2

特定のファイルに対して -pedantic スイッチを制限することは可能ですか? たとえば、標準で参照するalsa-libを使用してコンパイルします

#include <alsa/asoundlib.h>

ただし、このファイルで -pedantic パニックが発生します。私は、自分のコードの警告や奇妙な点を修正することに関心がありますが、alsa やその他の関係のないサード パーティは修正しません。

-pedantic の使用法をスコープする方法はありますか?

4

2 に答える 2

3

通常、明示的に指定しない限り、GCC はシステム ヘッダーの警告を抑制します-Wsystem-headers。通常、<>from/usr/includeに含まれるファイルはシステム ヘッダーとして扱われます。あなたの質問は、GCCがシステムヘッダーとして扱わないようにする何かを具体的に追加したことを示唆しています。使用しているコンパイラ オプションを指定していませんが、システム以外のヘッダー ディレクトリとして扱われる-I*可能性のある無意味なオプションを追加していませんか?/usr/include

他のすべてが失敗した場合は、 を使用し-isystemて実際にディレクトリをシステム ヘッダー ディレクトリとして追加できますが、ここでは必要ありません。

編集:質問を読み直した後、alsa-libを非標準パスにインストールした場合、-isystemオプションは必要ないという私の発言は間違っている可能性があります:それはまさにあなたが必要としているものかもしれません.

于 2012-04-18T21:14:10.707 に答える
2

任意のコンパイル キーのスコープを 1 つのコンパイル ユニットに設定できます。

どうやら、複数のコンパイル ユニットがある場合は、異なるキーを使用してそれらをコンパイルできます。

g++ -pedantic file_that_does_not_use_ugly_alsa.cpp
g++ file_that_uses_ugly_alsa.cpp

ただし、コンパイル ユニット内のキーをスコープすることはできません。コードはコンパイル前に前処理され、すべてのヘッダーはインライン化され、実際にはマクロ置換後にコードがコンパイラ パニックを引き起こすものを使用していることがわかる場合があります。

于 2012-04-18T19:17:57.083 に答える