3.4.5 警告和错误信息
参数 | 描述 |
---|
-ferror-limit=n | 在产生 n 个错误后停止发出诊断。 默认设置为 20。可以使用选项 -ferror-limit=0 禁用错误限制。 |
-ftemplate-backtrace-limit=n | 对于单个警告或错误,仅在模板实例化回溯中发出最多 n 个模板实例化注释。 默认设置为 10。可以使用选项 -ftemplate-backtrace-limit=0 禁用限制。 |
-ferror-warn filename | 将指定的编译器警告集转换为错误。 指定的文本文件包含警告名称列表,每个警告名称在文件中用空格分隔。警告名称基于相应编译器警告消息选项的开关名称。 例如,要转换选项-Wunused-variable 生成的警告,请使用警告名称unused-variable。 可以多次指定此选项。 |
注意此选项(及其相关文件)可以集成到构建系统中,并用于迭代解决项目生成的警告消息。
参数 | 描述 |
---|
-fsyntax-only | 仅检查语法错误。 |
-pedantic | 生成 ISO C 和 ISO C++ 标准要求的所有警告。 |
-pedantic-errors | 等效于 -pedantic,但生成错误而不是警告。 |
-Qunused-arguments | 不要为未使用的驱动程序参数生成警告。 |
-w | 禁止所有警告。 |
-Wfoo / -Wno-foo | 将现有的编译器选项 -Wfoo 重写为 -Wno-foo 指定选项的相反设置。 |
-Wall | 启用所有 -W 选项。 |
-Warray-bounds | 如果数组下标超出范围,则生成警告。 |
-Wcast-align | 如果指针转换增加了目标所需的对齐,则生成警告。 |
-Wchar-subscripts | 如果数组下标为 char 类型,则生成警告。 |
-Wcomment | 如果注释中出现注释符号,则生成警告。 |
-Wconversion | 如果隐式转换可能会改变值,则生成警告。 |
-Wdeclaration-after-statement | 当声明出现在语句之后的块中时生成警告。 |
-Wno-deprecated-declarations | 不要为分配了不推荐使用的属性的函数、变量或类型生成警告。 |
-Wempty-body | 如果 if、else 或 do while 语句包含空主体,则生成警告。 |
-Wendif-labels | 如果#else 或#endif 指令后跟文本,则生成警告。 |
-Werror | 将所有警告转换为错误。 |
-Werror=foo | 将指定的警告转换为错误。 |
-Wno-error=foo | 保留指定的警告作为警告,即使使用了 -Werror。 |
-Wfoo | 启用警告选项foo。 |
-Wno-foo | 禁用警告选项foo。 |
-Werror-implicit-function-declaration / -Weverything | 启用所有警告。 |
-Wextra | 启用选定的警告选项,并为选定的事件生成警告。 |
-Wfloat-equal | 如果比较两个浮点值是否相等,则生成警告。 |
-Wformat | 在使用格式字符串调用 printf、scanf 和其他函数时,请确保参数与指定的格式字符串兼容。-Wformat=2 此选项等效于指定以下选项:“-Wformat -Wformat-nonliteral -Wformat-security -Wformat-y2k”。 |
-Wno-format-extra-args | 不要为将额外参数传递给 printf 或 scanf 生成警告。 |
-Wformat-nonliteral | 如果格式字符串不是字符串文字,则生成警告,除非格式参数通过 va_list 传递。 |
-Wformat-security | 对可能导致安全风险的格式函数调用生成警告。 |
-Wignored-qualifiers | 如果返回类型具有限定符(例如,const),则生成警告。 |
-Wimplicit | 等效于 -Wimplicit-int 和 -Wimplicit-function-declaration。 |
-Wimplicit-function-declaration | 如果函数在声明之前使用,则生成警告或错误。 |
-Wimplicit-int | 如果声明未指定类型,则生成警告。 |
-Wno-invalid-offsetof | 如果宏 offsetof 传递了非 POD 类型,则不生成警告。 |
-Wlong-long | 如果使用 typelong long 则生成警告。 |
-Wmain | 如果函数 main() 有任何可疑属性,则生成警告。 |
-Wmissing-braces | 如果聚合或联合初始值设定项未正确括起来,则生成警告。 |
-Wmissing-declarations | 如果在没有首先声明的情况下定义了全局函数,则生成警告。 |
-Wmissing-noreturn | 如果函数不包含 return 语句,则生成警告。 |
-Wmissing-prototypes | 如果在没有原型的情况下定义全局函数,则生成警告。 |
-Wno-multichar | 如果使用多字符常量,则不生成警告。 |
-Wnonnull | 如果将空指针传递给指定为需要非空值(具有非空属性)的参数,则生成警告。 |
-Wpacked | 如果使用packed 属性指定结构后结构的内存布局不受影响,则生成警告。 |
-Wpadded | 如果结构的内存布局包含填充,则生成警告。 |
-Wparentheses | 如果在某些情况下省略括号,则会生成警告。 |
-Wpointer-arith | 如果任何代码取决于 void 的大小或函数类型,则生成警告。 |
-Wreturn-type | 如果函数返回默认为 int 的类型或与定义的返回类型不兼容的值,则生成警告。 |
-Wshadow | 如果局部变量影响另一个局部变量、全局变量或参数,则生成警告; 或者如果内置函数被遮蔽。 |
-Wsign-compare | 如果由于有符号操作数转换为无符号操作数而导致结果不准确,则在有符号/无符号比较中生成警告。 |
-Wswitch / -Wswitch-enum | 如果 switch 语句使用枚举类型作为索引,并且没有为每个可能的枚举值指定 case,或者指定 case 的值超出枚举范围,则生成警告。 |
-Wsystem-headers | 为系统头文件中声明的构造生成警告。 |
-Wtrigraphs | 如果三字符在注释中形成转义的换行符,则生成警告。 |
-Wundef | 如果未定义的非宏标识符出现在 #if 指令中,则生成警告。 |
-Wuninitialized | 如果引用未初始化的自动变量,则生成警告。 |
-Wunknown-pragmas | 如果编译器无法识别 #pragma 指令,则生成警告。 |
-Wunreachable-code | 如果代码永远不会被执行,则生成警告。 |
-Wunused | 指定所有 -Wunused 选项。 |
-Wunused-function | 如果声明了静态函数而未定义,则生成警告; 或者如果未使用非内联静态函数。 |
-Wunused-label | 如果标签被声明而不被使用,则生成警告。 |
-Wunused-parameter | 如果函数参数未在其函数中使用,则生成警告。 |
-Wunused-value | 如果随后未使用语句的值,则生成警告。 |
-Wunused-variable | 如果在其函数中未使用局部或非常量静态变量,则生成警告。 |
-Wwrite-strings | 对于 C,将字符串常量指定为 const char[length] 类型,以确保在将字符串地址复制到非常量 char * 指针时生成警告。 对于 C++,如果将字符串常量转换为 char *,则生成警告。 |
3.4.6 调试
参数 | 描述 |
---|
-dumpmachine | 显示目标机器名称。 |
-dumpversion | 显示编译器版本。 |
-feliminate-unused-debug-symbols | 仅为使用的符号生成调试信息。 (调试信息以 STABS 格式生成。) |
-time / -ftime-report | 显示编译的每个阶段所用的时间。 |
-g[level] | 生成源级调试信息。 |
-print-file-name=library | 显示指定文件的完整库路径。 |
-print-libgcc-file-name | 显示文件 libgcc.a 的库路径。 |
-print-multi-directory | 显示当前编译中其他编译器选项指定的多库的目录名称。 |
-print-multi-lib | 显示与指定当前编译中的库的编译器选项配对的多库的目录名称。 |
-print-multi-os-directory | 显示附加到 multilib 搜索路径的相对路径。 |
-print-prog-name=program | 显示指定程序的绝对路径。 |
-print-search-dirs | 显示用于在编译期间定位库和程序的搜索路径 |
-save-temps | 保存编译期间生成的通常临时的中间文件。 |