【问题标题】:What is required in C++ to compile -std=c++0x? [duplicate]在 C++ 中编译 -std=c++0x 需要什么? [复制]
【发布时间】:2013-04-20 03:59:25
【问题描述】:

我从学校服务器下载了我的程序,以便离线使用。我已经安装了 GNU,但是当我尝试使用我的 makefile 在我的 Mac 上编译它时,我得到了这个错误:

cc1plus: error: unrecognized command line option "-std=c++0x"

我假设我的 Mac 上缺少插件或其他东西?

谢谢

【问题讨论】:

  • @Jerry: 我不会打电话给clang wrong——它拥有最好的 C++11 支持。但它是不同的,并且不适用于相同的选项。
  • 什么?我使用 GNU 编译器。
  • 好的,那你安装的是什么版本的 GCC? clang 是 C++11 编程非常好的选择。支持更好,错误信息更容易理解。
  • 请剪切+粘贴g++ --version的输出。这会有所帮助。
  • 我假设是最新的?大声笑我认为它更新了 Xcode 更新?抱歉,我对编译器了解不多。我的教授和我所有的 CS 课程都刚刚使用 GNU,所以不幸的是,我对其他任何东西都不太熟悉。

标签: c++ command-line compiler-errors terminal


【解决方案1】:

-std=c++0x 是 G++ 的选项。 clang 是 Mac 编译器,看起来不需要标志。

实际上,clang 确实支持相同的-std=c++11 选项。

【讨论】:

  • 哦,好的,谢谢。那么我需要解决什么问题呢?
  • 将你的makefile中的$CXX变量设置为clang++,可能。
【解决方案2】:

检查手册页以了解您安装的任何版本的 gcc,以确认它支持相关参数。

编辑:只是为了澄清,因为还没有人说清楚。 c++0x 指的是新标准的一部分,可以说是“最先进的”。从 gcc 手册页:

c++0x 即将发布的 ISO C++ 0x 标准的工作草案。此选项启用可能包含在 C++ 0x 中的实验性功能。工作草案不断变化,如果此标志启用的任何功能不属于 C++ 0x 标准的一部分,则可能会从 GCC 的未来版本中删除。

【讨论】:

  • 好吧,它说的是 4.2,但 4.8 是当前的稳定版本?
  • @JGeis 获取新版本的 gcc。如果要使用 2011 标准,则需要 2007 之后的编译器。
猜你喜欢
  • 2011-04-15
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 2010-09-25
  • 2012-09-29
  • 2012-10-12
相关资源
最近更新 更多