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