如何为遗忘的退货声明打开gcc警告?

时间:2011-04-13 20:26:44

标签: c++ c gcc

如何为遗忘的退货声明启用gcc警告?

应该在以下情况下警告我:

int foo() {
  std::cout << "haha";
}

我知道-Wall会发出警告,但它会启用太多其他警告。

2 个答案:

答案 0 :(得分:18)

根据gcc的online documentation-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的返回类型定义函数时发出警告。另外警告任何返回值没有返回值的返回值没有返回值(从函数体的末尾掉下来被认为是没有值返回),以及关于返回语句在函数中使用表达式,其返回类型为void。

但是,如果启用-Wall会使您的代码有太多警告,我建议您修改代码!

答案 1 :(得分:-1)

始终使用:

gcc -g -ansi -pedantic -Wall -o