【问题标题】:What's your favorite g++ option? [closed]你最喜欢的 g++ 选项是什么? [关闭]
【发布时间】:2010-10-08 19:03:35
【问题描述】:

我是 C++ 编程的新手。 编译时我从不使用任何选项。

这是我的日常命令:

g++ MyCode.cc -o MyCode

对于安全实践,最佳选择是什么 要使用吗?

【问题讨论】:

标签: c++ unix gcc compiler-construction g++


【解决方案1】:
-ansi -迂腐的 -D__STDC_FORMAT_MACROS -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -D_REENTRANT -墙 -Wextra -Wwrite-strings -Winit-self -Wcast-对齐 -Wcast 质量 -Wold-style-cast -Wpointer-arith -Wstrict-aliasing -W格式=2 -未初始化 -Wmissing-declarations -Woverloaded-虚拟 -Wnon-virtual-dtor -Wctor-dtor-隐私 -Wno-long-long -O3 -ftree-矢量化 -ftree-vectorizer-verbose=2 -ffast-数学 -fstrict-aliasing -march=native/pentium4/nocona/core2 -msse2 -mfpmath=sse

【讨论】:

    【解决方案2】:

    我们总是使用

    g++ -Wall -Wextra ...
    

    【讨论】:

      【解决方案3】:

      我喜欢-march=athlon -O2 -pipe 来构建大多数程序(我在家里运行Gentoo),我使用-ansi -pedantic -Wall 来编写自己编写的代码。

      【讨论】:

        【解决方案4】:

        -pipe,它加快了编译速度。还有 -O2,它可以加快执行速度。

        【讨论】:

        • 优化通常会干扰调试。对于新手来说,最好使用 -g 而没有 -Ox。
        • 您使用 -pipe 看到了哪些速度改进?我发现这并没有太大的区别,因为大部分时间都花在了链接上(不能跨多个内核并行化,比如编译)。
        【解决方案5】:

        如果你认为你抓住了一切,试试-Wextra

        【讨论】:

          【解决方案6】:
          g++ -g 
          

          我真的需要调试信息....

          【讨论】:

            【解决方案7】:
            g++ -Wall -Weffc++ -Werror -pedantic
            

            不过,当我使用 Boost 时,我会将其归为:

            g++ -Wall -Werror
            

            不过,我正在焦急地等待 GCC 4.4 和 4.5。有一些我非常需要的功能即将推出。

            【讨论】:

            • 您还在等什么 4.4/4.5 功能?
            • Lambdas(我希望在 4.5 中出现)、自动变量 (4.4)、强类型枚举 (4.4),最重要的是原子,我非常希望4.5 完成。
            • 不幸的是,-Weffc++ 使带有内部指针的对象成为一场噩梦。
            • 我知道。这就是为什么我不将它与 Boost 一起使用 - 仅包含 Boost 标头会产生另外 30-40 个警告。
            • @Tom 有-isystem
            【解决方案8】:
            g++ -W -Wall -Werror
            

            将显示所有可能的错误和警告并将其视为错误。

            【讨论】:

            • 致 OP - 按照这张海报的建议去做!如果你只听编译器警告,你会省去很多麻烦。不要忽视他们!
            • 实际上,它并没有启用所有可能的警告。 -Wwrite-strings 和 -Wconversion 也不错。
            • 另一个好方法是-Wnon-virtual-dtor,但如果 dtor 受到保护,它可能会导致误报。
            • 注意:“-W”是-Wextra的旧名称,因为它“添加”到-Wall,我发现“-Wall -Wextra”的排序更合乎逻辑。
            • 所有可能的警告? Heh.Hehehehe.Hahahahaha!Bwahahahahaha!
            【解决方案9】:

            其实是一套:-Wall -pedantic -std=c++98

            【讨论】:

              【解决方案10】:

              “-Werror”:将所有警告视为错误,因此您必须修复它们。非常有价值。

              【讨论】:

              • 当然,与 -Wall 一起打开所有有用的警告。
              猜你喜欢
              • 2010-09-05
              • 2011-07-18
              • 2010-09-13
              • 2010-10-25
              • 2011-05-22
              • 2010-09-11
              • 1970-01-01
              • 2010-09-12
              • 2010-10-06
              相关资源
              最近更新 更多