Согласно руководству 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
?Или, может быть, мне не хватает другой доступной опции?
Если это имеет значение, я нахожусь на Mac OS 10.7 (Darwin 11) с GCC 4.2.1 (как ни странно, скомпилировано с LLVM: P)