1

我在工作中使用 VC++ 2010,在家里使用 gcc 4.7 进行 C、C++ 编程。我注意到用于检查堆栈溢出、堆损坏、使用未初始化变量等细微错误的编译器选项默认情况下在 vc++ 中启用,但在 gcc 中没有。在浏览 gcc 手册时,我发现了像“-fstack-protector”这样的选项来检查堆栈溢出/损坏。我能否获得所有此类选项的列表和一些提示,以便在使用 vc++ 时从 gcc 获得所有帮助?谢谢。

4

2 回答 2

1

您肯定在寻找请求或抑制警告的选项

从网站上列出其中的几个:-

-fmax-错误=n

将错误消息的最大数量限制为 n,此时 GCC 会退出而不是尝试继续处理源代码。如果 n 为 0(默认值),则生成的错误消息的数量没有限制。如果还指定了 -Wfatal-errors,则 -Wfatal-errors 优先于该选项。

-墙

这会启用所有关于一些用户认为有问题的构造的警告,并且很容易避免(或修改以防止警告),即使与宏一起使用。这也启用了 C++ 方言选项和 Objective-C 和 Objective-C++ 方言选项中描述的一些特定于语言的警告。-Wall 打开以下警告标志:

      -Waddress   
      -Warray-bounds (only with -O2)  
      -Wc++11-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)  
      -Wmaybe-uninitialized 
      -Wmissing-braces (only for C/ObjC) 
      -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 
       Note that some warning flags are not implied by -Wall. Some of them warn about constructions that users generally do not consider

有问题,但有时您可能希望检查;其他人警告在某些情况下必须或难以避免的构造,并且没有简单的方法来修改代码以抑制警告。其中一些由 -Wextra 启用,但其中许多必须单独启用。

于 2013-10-13T06:49:27.843 回答
0

尝试lint工具和gcc -Wall选项

于 2013-10-13T06:49:25.077 回答