深圳网站建设服务器公司,wordpress返回上一页,wordpress子域,网页设计入门模板gcc警告选项汇总 请求或取消警告的选项
警告是诊断消息#xff0c;报告的结构本质上不是错误的#xff0c;但是有风险或表明可能有错误。
以下与语言无关的选项不会启用特定的警告#xff0c;但会控制GCC生成的诊断类型。 -fsyntax-only 检查代码中的语法错误#xff0c;…gcc警告选项汇总 请求或取消警告的选项
警告是诊断消息报告的结构本质上不是错误的但是有风险或表明可能有错误。
以下与语言无关的选项不会启用特定的警告但会控制GCC生成的诊断类型。 -fsyntax-only 检查代码中的语法错误但除此之外不要做任何事情。
-fmax-errors n 将错误消息的最大数量限制为n 此时GCC会缓存而不是尝试继续处理源代码。 如果n为0默认值则生成的错误消息数量不受限制。 如果还指定了-Wfatal-errors 则重大错误优先于此选项。
-w 禁止所有警告消息。
-Werror 使所有的警告进入错误。
-Werror 将指定的警告转换为错误。 附加警告的说明符; 例如-Werror 开关将由-Wswitch控制的警告转换为错误。 此开关采用否定形式用于否定-针对特定警告的错误; 例如-Wno-error 开关使得-wswitch警告不是错误即使在-Werror有效时也是如此。
每个可控警告的警告消息都包含控制警告的选项。 那么该选项可以与-Werror 和-Wno-error 一起使用 如上所述。 可以使用-fno-diagnostics-show-option标志禁用警告消息中的选项打印。
请注意指定-Werror foo会自动隐含-W foo 。 但是 -Wno-error foo并不意味着什么。
-Wfatal-errors 此选项会导致编译器在发生第一个错误时中止编译而不是尝试继续并打印更多错误消息。
例如您可以使用以“ -W ”开头的选项来请求许多特定的警告 - 可以隐式地请求隐式声明的警告。 这些特定警告选项中的每一个都有一个以“ -Wno- ”开始的否定形式来关闭警告; 例如 -Wno-implicit 。 本手册仅列出两种形式中的一种无论哪种都不是默认值。 有关其他语言特定的选项还可以参考C Dialect Options和Objective-C以及Objective-C Dialect Options 。
某些选项如-Wall和-Wextra 会打开其他选项例如-Wunused 这可能会启用其他选项例如-Wunused-value 。 正面和负面形式的综合作用是更具体的选项优先于不特定的选项与命令行中的位置无关。 对于相同特征的选项最后一个生效。 通过编译指示启用或禁用的选项请参阅诊断编译指示 将起作用就好像它们出现在命令行末尾一样。
当请求无法识别的警告选项时例如-Wunknown-warning GCC将发出诊断指出该选项未被识别。 但是如果使用-Wno- form行为会稍有不同除非正在生成其他诊断否则不会生成-Wno-unknown-warning诊断。 这允许在旧编译器中使用新的-Wno-选项但如果出现问题编译器会警告存在无法识别的选项。
-Wpedantic -pedantic 发布严格的ISO C和ISO C 所要求的所有警告; 拒绝所有使用禁止扩展的程序以及其他一些不遵循ISO C和ISO C 的程序。 对于ISO C遵循由所使用的任何-std选项指定的ISO C标准版本。
有效的ISO C和ISO C 程序应该在有或没有这个选项的情况下正确编译尽管极少数需要指定所需版本的ISO C的-ansi或-std选项。 但是如果没有这个选项也支持某些GNU扩展和传统的C和C 特性。 有了这个选项他们被拒绝。
-Wpedantic不会导致使用名称以“ __ ”开头和结尾的替代关键字的警告消息。 在__extension__之后的表达式中也禁止了迂腐警告。 但是只有系统头文件应该使用这些转义路由; 应用程序应该避免它们。 请参阅备用关键字 。
一些用户尝试使用-Wantantic来检查程序是否符合严格的ISO C标准。 他们很快就发现它并没有达到他们想要的水平它找到了一些非ISO的做法但不是所有的只有ISO C 需要诊断的那些做法以及其他一些诊断已经添加了的做法。
报告任何不符合ISO C标准的功能在某些情况下可能会有用但需要大量额外的工作并且与-Wantantic完全不同。 我们不打算在不久的将来支持这种功能。
如果用-std指定的标准表示C的GNU扩展方言如’ gnu90 ‘或’ gnu99 则存在相应的基本标准 GNU扩展方言所基于的ISO C版本。 -Wpedantic给出的警告在基本标准要求的地方给出。 这种警告只适用于不在指定的GNU C方言中的功能是没有意义的因为根据定义C的GNU方言包括编译器支持的所有功能并且没有任何可警告的内容。
-pedantic-errors 在基本标准 请参阅-Wpedantic 需要诊断时在编译时存在未定义行为的某些情况下以及在某些其他情况下不会妨碍编译符合标准的有效程序的情况下发出错误。 这不等于-Werror 迂回 因为这个选项启用了错误而后者没有启用反之亦然。
-Wall 这使得所有关于某些用户认为可疑的构造的警告都很容易避免或修改以防止警告即使与宏结合使用也是如此。 这也启用了C 方言选项和Objective-C和Objective-C 方言选项中描述的一些特定于语言的警告。
-打开以下警告标志
-Waddress
-Warray-bounds1 (only with -O2)
-Wbool-compare
-Wbool-operation
-Wc11-compat -Wc14-compat
-Wcatch-value (C and Objective-C only)
-Wchar-subscripts
-Wcomment
-Wduplicate-decl-specifier (C and Objective-C only)
-Wenum-compare (in C/ObjC; this is on by default in C)
-Wformat
-Wint-in-bool-context
-Wimplicit (C and Objective-C only)
-Wimplicit-int (C and Objective-C only)
-Wimplicit-function-declaration (C and Objective-C only)
-Winit-self (only for C)
-Wlogical-not-parentheses
-Wmain (only for C/ObjC and unless -ffreestanding)
-Wmaybe-uninitialized
-Wmemset-elt-size
-Wmemset-transposed-args
-Wmisleading-indentation (only for C/C)
-Wmissing-attributes
-Wmissing-braces (only for C/ObjC)
-Wmultistatement-macros
-Wnarrowing (only for C)
-Wnonnull
-Wnonnull-compare
-Wopenmp-simd
-Wparentheses
-Wpointer-sign
-Wreorder
-Wrestrict
-Wreturn-type
-Wsequence-point
-Wsign-compare (only in C)
-Wsizeof-pointer-div
-Wsizeof-pointer-memaccess
-Wstrict-aliasing
-Wstrict-overflow1
-Wswitch
-Wtautological-compare
-Wtrigraphs
-Wuninitialized
-Wunknown-pragmas
-Wunused-function
-Wunused-label
-Wunused-value
-Wunused-variable
-Wvolatile-register-var
CMake指令解析 set(CMAKE_CXX_FLAGS “$ENV{CXXFLAGS} -rdynamic -O3 -fPIC -ggdb -stdc11 -Wall -Wno-deprec
1、CMAKE_CXX_FLAGS 这种大写的变量一般都是CMake预定义的内建变量且他们是全局的。该变量可用于设置编译选项。直接使用set修改其值即可。
除了修改该变量的值之外还可以通过add_compile_options命令来设置编译选项。它们的区别是 add_compile_options命令添加的编译选项是针对所有编译器的(包括c和c编译器) CMAKE_C_FLAGS或CMAKE_CXX_FLAGS变量则是分别只针对c和c编译器
2、$ENV{} $ENV{}用于获取环境变量设置环境变量的方法是
set(ENV{变量名} 值) 1 3、CXXFLAGS CXXFLAGS是C编译器的编译选项。
4、-rdynamic -rdynamic编译选项通知链接器将所有符号添加到动态符号表中。目的是能够通过使用 dlopen 来实现向后跟踪 gcc选项-g与-rdynamic的异同
5、-O3 -O3是一个优化选项告诉编译器优化我们的代码。 gcc -O0 -O1 -O2 -O3 四级优化选项及每级分别做什么优化
6、-fPIC -fPIC 作用于编译阶段告诉编译器产生与位置无关代码即产生的代码中没有绝对地址全部使用相对地址故而代码可以被加载器加载到内存的任意位置都可以正确的执行。这正是共享库所要求的共享库被加载时在内存的位置不是固定的。 gcc编译参数-fPIC的一些问题
7、-ggdb -ggdb选项使编译器生成gdb专用的更为丰富的调试信息。 gcc 的 -g 和 -ggdb 选项
8、-stdc11 -stdc11设置为使用C11标准
9、-Wall -Wall选项告诉编译器 编译后显示所有警告。 gcc中的-w -W和-Wall选项
10、-Wno-deprecated 不要警告使用已弃用的功能
11、-Werror 告诉编译器视所有警告为错误出现任何警告立即放弃编译
12、-Wno-unused-function 关闭 函数被定义了但没有被使用 而产生的警告即不使用的函数不警告。
13、-Wno-builtin-macro-redefined 如果某些内置宏被重新定义请不要警告。这抑制了警告的重新定义__TIMESTAMP__TIMEDATEFILE和__BASE_FILE__。
14、-Wno-deprecated-declarations 关闭使用废弃API的警告。