用 g 编译 C 11

新手上路,请多包涵

我正在尝试将我的 C++ 编译器更新为 C++11。我进行了一些搜索,得出的结论是我必须使用标志 -std=c++0x-std=gnu++0x ,但我对标志知之甚少。谁能帮我? (我使用的是 Ubuntu 12.04。)

这是我尝试使用 C++11 中包含的库(即数组)时从编译器得到的错误:

 #include <array>
#include <iostream>

int main()
{
    std::array<int, 3> arr = {2, 3, 5};
    ...
}

该文件需要对即将推出的 ISO C++ 标准 C++0x 的编译器和库支持。此支持目前是实验性的,必须使用 -std=c++0x 或 -std=gnu++0x 编译器选项启用。

原文由 Rontogiannis Aristofanis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 652
2 个回答

标志(或编译器选项)只不过是传递给编译器可执行文件的普通命令行参数。

假设您正在从命令行(终端)调用 g++:

$ g++ -std=c++11 your_file.cpp -o your_program

或者

$ g++ -std=c++0x your_file.cpp -o your_program

如果上述方法不起作用。

原文由 Oskar N. 发布,翻译遵循 CC BY-SA 3.0 许可协议

您可以参考以下 链接 以了解哪个版本的编译器支持哪些功能。它在现代编译器中提供了详尽的功能支持列表。似乎 GCC 非常严格地遵循标准并在任何其他编译器之前实现。

关于你的问题,你可以编译使用

  1. g++ source_file.cpp -o executable_name -std=c++11 C++11
  2. g++ source_file.cpp -o executable_name -std=c++14 C++14
  3. g++ source_file.cpp -o executable_name -std=c++17 用于 C++17
  4. g++ source_file.cpp -o executable_name -std=c++2a 对于 C++20,尚不支持 C++20 的所有功能。有关 GCC 中的功能支持列表,请参阅此 链接

列表变化很快,如果您正在等待支持特定功能,请密切关注列表。

原文由 yadhu 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题