3

GCC のマニュアルによると、-Wreturn-typeオプションは で有効になります-Wall。ただし、残りを有効にしたまま無効にする適切な方法が見つかりません-Wall

次のコードを検討してください。

func() {}

警告なしでコンパイルした場合、出力は生成されません。ここで、オンにすると-Wall、次の行が表示されます。

$ gcc fn.c -Wall
fn.c:1: warning: return type defaults to ‘int’
fn.c: In function ‘func’:
fn.c:1: warning: control reaches end of non-void function

わかりました、すべていいです。でコンパイルすると-Wreturn-type、同じ出力が生成されます。

$ gcc fn.c -Wreturn-type
fn.c:1: warning: return type defaults to ‘int’
fn.c: In function ‘func’:
fn.c:1: warning: control reaches end of non-void function

-Wreturn-typeしたがって、私はそれがこれらの警告の原因であると結論付けています. しかし、これは出力を生成しないと予想されていたため、そうではないか、もっと悪いことをしている可能性があります。

$ gcc fn.c -Wall -Wno-return-type
fn.c:1: warning: return type defaults to ‘int’

使用できますが、完全に-Wall無効にすることはできますか? -Wreturn-typeそれとも、利用可能な別のオプションがありませんか?

問題があれば、GCC 4.2.1を搭載したMac OS 10.7(Darwin 11)を使用しています(奇妙なことに、LLVMでコンパイルされています:P)

4

1 に答える 1

7

-Wno-implicit-intその警告を無効にするために使用できます。

gcc -c -Wall -Wno-return-type -Wno-implicit-int fn.c

ただし、これにより、表示したい他の警告が無効になる可能性があります。たとえば、次のように宣言された変数に関する警告を抑制します。

static x = 1;

あなたの毒を選んでください。

于 2011-08-29T23:50:24.913 に答える