Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gcc-4.8.1中氧气优化水平的建议警告标志_C++_C_Gcc_Gcc Warning - Fatal编程技术网

C++ gcc-4.8.1中氧气优化水平的建议警告标志

C++ gcc-4.8.1中氧气优化水平的建议警告标志,c++,c,gcc,gcc-warning,C++,C,Gcc,Gcc Warning,我最近从gcc-4.2.4迁移到了gcc-4.8.1。gcc-4.8.1中氧气优化级别的建议gcc警告选项是什么 我在gcc-4.2.4中使用了以下警告标志: -Wall-Wno括号-Wpointer arith-Wcast align-Wsign compare-Wnon virtual dtor-Wnon template friend-Woverloaded virtual-Wsign promo我推广的约定是: -Wall -Wextra -pedantic 请访问GCC文档,以了解有

我最近从gcc-4.2.4迁移到了gcc-4.8.1。gcc-4.8.1中氧气优化级别的建议gcc警告选项是什么

我在gcc-4.2.4中使用了以下警告标志:
-Wall-Wno括号-Wpointer arith-Wcast align-Wsign compare-Wnon virtual dtor-Wnon template friend-Woverloaded virtual-Wsign promo我推广的约定是:

-Wall -Wextra -pedantic

请访问GCC文档,以了解有关启用哪些特定标志的详细信息。

取决于要构建的目标。 对于ubuntu,我会:

CWARN   =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion -Wdeclaration-after-statement    \
         -Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Wimplicit-int -Winit-self -Wint-to-pointer-cast  \
         -Wjump-misses-init -Wlogical-op -Wmissing-braces -Wmissing-field-initializers -Wmissing-parameter-type          \
         -Woverflow -Wpointer-arith -Wpointer-sign -Wpointer-to-int-cast -Wredundant-decls -Wreturn-type -Wshadow        \
         -Wsign-compare -Wtype-limits -Wuninitialized -Wwrite-strings \
         -Wno-unused-parameter -Wno-multichar -Wno-strict-aliasing
CXXWARN =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wc++0x-compat -Wcast-align -Wconversion -Wdiv-by-zero     \
         -Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self -Wint-to-pointer-cast -Wlogical-op -Wmissing-braces \
         -Wmissing-field-initializers -Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare \
         -Wsign-promo -Wtype-limits -Wuninitialized -Wwrite-strings \
         -Wno-unused-parameter -Wno-multichar -Wno-strict-aliasing
对于独立内核开发,我执行以下操作:

CWARN    =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion         \\
          -Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self              \\
          -Wint-to-pointer-cast -Wlogical-op -Wmissing-braces -Wmissing-field-initializers       \\
          -Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare     \\
          -Wtype-limits -Wuninitialized -Wwrite-strings                                          \\
          -Wno-unused-parameter -Wno-unused-variable -Wno-multichar -Wno-unused-but-set-variable \\
          -Wdeclaration-after-statement -Wimplicit-int -Wjump-misses-init -Wpointer-sign         \\
          -Wpointer-to-int-cast -Wmissing-parameter-type
CXXWARN  =-Wall -Wextra -Wattributes -Wbuiltin-macro-redefined -Wcast-align -Wconversion         \\
          -Wdiv-by-zero -Wdouble-promotion -Wenum-compare -Wfloat-equal -Winit-self              \\
          -Wint-to-pointer-cast -Wlogical-op -Wmissing-braces -Wmissing-field-initializers       \\
          -Woverflow -Wpointer-arith -Wredundant-decls -Wreturn-type -Wshadow -Wsign-compare     \\
          -Wtype-limits -Wuninitialized -Wwrite-strings                                          \\
          -Wno-unused-parameter -Wno-unused-variable -Wno-multichar -Wno-unused-but-set-variable \\
          -Wc++0x-compat  -Wsign-promo
有些警告是通过-Wextra或friends打开的,但我只想显式地打开它们,如果命令行不太长,也不会有什么坏处

对于android和iOS,您可能还需要关闭一些警告,以减少标准库中的噪音


如果你可能想知道有很多标志会有点过分,但这会让编译器诚实地对待任何糟糕的编程实践,它可能不是来自你,而是来自你的队友。

我推荐所有这些标志(至少
-Wall-Wextra-pedantic
),并且只禁用那些你确实找不到合理方法修复的标志。不过,这有点主观。
-Wall-Wextra-Werror
不要忘记
-Werror
,否则构建脚本将继续运行(可能不正确)program@Brandin:某些警告仅在启用优化时出现(因为严格的别名…
-Werror
可能适用于您自己的代码,但将其用于第三方构建和自动工具/配置脚本通常会失败。像
AC_LANG_SOURCE
这样的宏通常是罪魁祸首。
-Werror
对于其他人构建的代码来说不是一个好主意:新/旧编译器版本总是会发出不同的警告,导致编译失败,而可能没有任何严重错误。如果必须,请将其用作开发工具,但在默认情况下不要强迫他人使用。这是一种非常简单的方法,他提到的许多标志都不会启用。@KarolyHorvath:它根本不是“简单的”。他问“gcc-4.8.1中O2优化级别的建议gcc警告选项是什么?”而不是“我现在要列出的gcc警告选项是什么?”如果他想添加更多,当然欢迎他加入,但我建议不要这样做,除非你知道出于某些特定原因需要。严重(开源)我看到的项目至少使用了十几个标志,所以如果这是你的建议,那么是的,我发现它非常简约…@RYUZAKI:优化级别与警告有什么关系?你的问题太笼统了:你只是说有“一些警告”你想“清理”,但没有告诉我们它们是什么,我们帮不了你。我真的不明白你为什么需要帮助:如果有你不想设置的警告,请取消设置。这不是火箭科学。如果编译器在特定的优化级别上发出警告,这可能意味着有人滥用了未定义的行为,这将在以后用大量的调试时间折磨你。即使是拥有百万代码的项目,也应该认真对待它,并且值得做的是,保持警告为少,如果不是零的话。