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)