Mat*_*rog 97
它是"警告所有人"的缩写 - 它(几乎)打开了g ++可以告诉你的所有警告.通常是一个好主意,特别是如果你是初学者,因为理解和修复这些警告可以帮助你解决代码中的许多不同类型的问题.
rur*_*ban 29
见男人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
Run Code Online (Sandbox Code Playgroud)
-Wextra包含:
-Wclobbered -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers
-Wmissing-parameter-type (C only) -Wold-style-declaration (C only) -Woverride-init
-Wsign-compare -Wtype-limits -Wuninitialized -Wunused-parameter (only with -Wunused
or -Wall) -Wunused-but-set-parameter (only with -Wunused or -Wall)
Run Code Online (Sandbox Code Playgroud)
还有许多警告你必须明确打开.
例如,我们的C代码使用:
-Wall -Wextra -Waggregate-return -Wcast-align -Wcast-qual -Wdisabled-optimization -Wdiv-by-zero -Wendif-labels -Wformat-extra-args -Wformat-nonliteral -Wformat-security -Wformat-y2k -Wimplicit -Wimport -Winit-self -Winline -Winvalid-pch -Wjump-misses-init -Wlogical-op -Werror = missing-braces -Wmissing-declarations -Wno-missing-format-attribute -Wmissing-include-dirs -Wmultichar -Wpacked -Wpointer-arith -Wreturn-type -Wsequence-point -Wsign-compare -Wstrict-aliasing -Wstrict-aliasing = 2 -Wswitch -Wswitch-default -Werror = undef -Wno-unused -Wvariadic-macros -Wwrite-strings -Wc ++ -compat -Werror =声明后语句-Werror = implicit-function-declaration -Wmissing-prototypes -Werror = nested-externs -Werror = old-style-definition -Werror = strict-prototypes
或者只是https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html上的一组警告
Dev*_*lar 18
可悲的是,没有一个答案引用了手册中实际相关的部分,这真正使它达到了一个目的:
这将启用有关某些用户认为有问题且易于避免(或修改以防止警告)的构造的所有警告,即使与宏结合使用也是如此.
[...]
请注意,并不暗示某些警告标志
-Wall.他们中的一些人警告用户通常不认为有问题的结构,但有时您可能希望检查; 其他人警告在某些情况下必要或难以避免的构造,并且没有简单的方法来修改代码以抑制警告.其中一些是启用的,-Wextra但其中许多必须单独启用.
人机工程学:
-Wall也不会意味着"所有警告".最重要的是,它应该是您应该设置的绝对最小警告.虽然-Wall -Wextra更好,它仍然没有利用编译器可以为您做的所有错误检查.
就个人而言,我不会少于-Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual.我当前所有的项目实际上都使用了比这更长的警告列表(没有触发任何警告).我会检查每个主要版本的手册以获取新选项.编译器是你的朋友.使用它可以为您提供的任何诊断.
它支持gcc编写者认为有用且容易避免的警告.还有-W(新版本中的-Wextra)被认为是有用的,但是解决方法可能难以解决并导致笨拙的代码.
gcc还有一堆其他警告,通常不太有用.见http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options
| 归档时间: |
|
| 查看次数: |
53538 次 |
| 最近记录: |