#c #c #gcc
#c #c #gcc
Вопрос:
Как мне включить предупреждения gcc для забытого оператора return?
Предполагается, что он предупреждает меня в случаях, подобных следующему:
int foo() {
std::cout << "haha";
}
Я знаю, что -Wall
включает это предупреждение, но оно включает слишком много других предупреждений.
Комментарии:
1. Вы пробовали использовать -Wextra / -ansi / -pedantic?
2.
-Wall
включает слишком много других предупреждений? Это первое.3. Если у вас слишком много настроек -Wall, альтернативой может быть переключение определенных, которые не соответствуют вашему стилю кодирования. Хотя мне было бы любопытно услышать, какие из них у вас есть, которые не дают вам ценной обратной связи о проблемах в вашем коде.
4. @Jens Gustedt: Другой возможностью было бы переписать код, чтобы сократить количество предупреждений. Очень полезно иметь код, который компилируется с включенной проверкой большого количества ошибок, но без предупреждений. Намного проще сохранить это таким образом, чем получить его таким образом.
Ответ №1:
Согласно онлайн-документации gcc, -Wall
включается:
-Waddress
-Warray-bounds (only with -O2)
-Wc 0x-compat
-Wchar-subscripts
-Wenum-compare (in C/Objc; this is on by default in C )
-Wimplicit-int (C and Objective-C only)
-Wimplicit-function-declaration (C and Objective-C only)
-Wcomment
-Wformat
-Wmain (only for C/ObjC and unless -ffreestanding)
-Wmissing-braces
-Wnonnull
-Wparentheses
-Wpointer-sign
-Wreorder
-Wreturn-type
-Wsequence-point
-Wsign-compare (only in C )
-Wstrict-aliasing
-Wstrict-overflow=1
-Wswitch
-Wtrigraphs
-Wuninitialized
-Wunknown-pragmas
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
-Wvolatile-register-var
Из них -Wreturn-type
кажется, что это сработало бы:
Предупреждать всякий раз, когда функция определена с возвращаемым типом, который по умолчанию равен int. Также предупреждайте о любом операторе return без возвращаемого значения в функции, возвращаемый тип которой не является void (выпадение из конца тела функции считается возвращением без значения), и о операторе return с выражением в функции, возвращаемый тип которой является void.
Однако, если при включении -Wall
в вашем коде появляется слишком много предупреждений, я бы рекомендовал исправить ваш код!
Ответ №2:
всегда используйте:
gcc -g -ansi — pedantic -Wall -o