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)