代码之家  ›  专栏  ›  技术社区  ›  steven

“g++-wall test.cpp-o test”中的“-wall”是什么?

  •  69
  • steven  · 技术社区  · 16 年前

    -o更改输出文件名(我发现使用--help)

    但我不知道 -Wall 做?

    7 回复  |  直到 8 年前
        1
  •  89
  •   Tyler    16 年前

    它是“warn all”的缩写——它打开(几乎)G++可以告诉您的所有警告。通常是一个好主意,特别是如果您是初学者,因为理解和修复这些警告可以帮助您修复代码中的许多不同类型的问题。

        2
  •  26
  •   rurban    8 年前

    见人GCC。

    打开这些警告:

    -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
    

    -沃尔特 包含:

    -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)
    

    还有许多警告需要您明确地打开。

    例如,对于我们的C代码,我们使用:

    -wall-wextra-wagggregate 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-wlogic 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=declaration after statement-werror=implicit函数声明-wmissing prototype-werror=nested-externs-werror=旧样式定义-werror=严格原型

    或者只是一组警告 https://www.gnu.org/software/autoconf-archive/ax_compiler_flags.html

        3
  •  15
  •   DevSolar    12 年前

    可悲的是,没有一个答案引用了手册中实际相关的部分,这确实说明了一点:

    这将启用一些用户考虑的有关构造的所有警告 有问题,容易避免(或修改以防止警告)。 即使与宏一起使用。

    […]

    请注意,某些警告标志不是由 -Wall . 其中一些警告 关于用户通常不认为有问题的结构,但是 有时你可能希望检查一下;其他人警告说 在某些情况下是必要的或很难避免的,而且没有简单的方法 修改代码以取消警告。其中一些是由 -Wextra 但其中许多必须单独启用。

    埃尔戈:

    • 指“所有警告”。
    • 它也 意思是“(几乎)全部”,不是一个很长的镜头。
    • 指一组单独的选项 一定会改变的 .

    底线是,它是您应该设置的警告的绝对最小值。同时 -Wall -Wextra 更好的是,它仍然没有利用编译器可以为您做的所有错误检查。


    就我个人而言,我不会去少于 -Wall -Wextra -Wfloat-equal -Wundef -Wcast-align -Wwrite-strings -Wlogical-op -Wmissing-declarations -Wredundant-decls -Wshadow -Woverloaded-virtual . 我当前的所有项目实际使用的警告列表都比这长(不会触发任何警告)。我会检查每一个主要版本的手册,寻找新的选项。编译器是你的朋友。使用它能提供给您的任何诊断。

        4
  •  6
  •   AProgrammer    16 年前

    它启用了被视为有用的警告 很容易被GCC的作者从源头上避免。还有-w(在较新版本中为wextra)被认为是有用的,但对于它,解决误报可能很困难,或者会导致代码笨拙。

    GCC也有许多其他的警告,通常不太有用。见 http://gcc.gnu.org/onlinedocs/gcc-4.4.3/gcc/Warning-Options.html#Warning-Options

        5
  •  1
  •   Yuval    11 年前

    enables most warning messages .

    如果你使用 g++ --help=warnings .

        6
  •  0
  •   Bjorn J    16 年前

    它启用所有警告。(读作“全部警告”)。

        7
  •  -1
  •   Kirill V. Lyadvinsky    16 年前

    它显示所有警告。我建议也使用 -pedantic 警告代码的某些不一致部分。

    推荐文章