-Стенная без -вернутого типа - PullRequest
3 голосов
/ 30 августа 2011

Согласно руководству 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)

1 Ответ

7 голосов
/ 30 августа 2011

Вы можете использовать -Wno-implicit-int, чтобы отключить это предупреждение:

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

Однако это может привести к отключению других предупреждений, которые вы, возможно, захотите видеть Например, он отключит предупреждение о переменной, объявленной так:

static x = 1;

Собери свой яд.

...