【问题标题】:Avoid compilation ISO C++避免编译 ISO C++
【发布时间】:2013-02-04 17:24:41
【问题描述】:

默认情况下,在 Ubuntu 上,当我尝试使用 g ++ 进行编译时:

g++ -o name file.cpp

有时它会以“ISO C++ 禁止...”作为响应

如果我不想用 ISO 编译,我应该使用什么标志?

【问题讨论】:

  • 您可能使用了可变长度数组。它们实际上不是 C++ 的一部分(只是 C99 及更高版本)。因此,您需要专有扩展。请记住,您的代码不可移植。
  • 遵守语言规则,编写合法的 C++ 代码不是更简单吗?
  • @jalf 如果他继承了 Cx9 代码或使用专有扩展的代码,则不会
  • 非常感谢大家...现在更清楚了
  • @sehe 是的,但如果他这样做了,他通常也会继承一个构建系统,该系统会使用必要的标志调用编译器。 :)

标签: c++ compilation compiler-errors


【解决方案1】:

使用

g++ -std=c++0x

或

g++ -std=gnu++0x

注意:如果您专有启用扩展,您的代码将变得不那么可移植。

C++11 功能作为“主线”GCC 编译器的一部分在 GCC 的 Subversion 存储库的主干以及 GCC 4.3 及更高版本中提供。要启用 C++0x 支持,请将命令行参数 -std=c++0x 添加到 g++ 命令行。或者,要启用除 C++0x 扩展之外的 GNU 扩展,请将 -std=gnu++0x 添加到您的 g++ 命令行。 GCC 4.7 及更高版本也支持 -std=c++11 和 -std=gnu++11。

见http://gcc.gnu.org/projects/cxx0x.html

【讨论】:

    【解决方案2】:

    如果您想使用 gcc/g++ 扩展,请使用-std=gnu++0x。当然,假设这不是“您实际上不能在 C++ 中执行此操作”的情况。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-22
      • 2015-06-15
      • 2012-02-01
      • 1970-01-01
      • 2014-11-01
      • 2016-03-23
      • 1970-01-01
      相关资源
      最近更新 更多