Как включить предупреждения gcc для забытого оператора return?

#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