【问题标题】:Enabling `-std=c++14` flag in Code::Blocks在 Code::Blocks 中启用 `-std=c++14` 标志
【发布时间】:2015-09-19 05:45:01
【问题描述】:

我已经安装了适用于 Windows 的 Code::Blocks,并且想要编译 C++14 代码,例如通用 lambda,但是我从 codeblocks.org 安装的 Code::Blocks 的二进制版本不支持该标志
-std=c++14.

如何更新编译器并为 Code::Blocks 启用 -std=c++14 标志?

【问题讨论】:

  • 我建议安装 MinGW-w64。它是原始 MinGW 的一个活跃分支,现在已经年久失修。当前最佳答案中给出的链接是一个人的 MinGW-w64 特定版本;但是,如果您从 the official site 获得它,您可以使用在线安装程序,只需 pick the options you want

标签: c++ codeblocks c++14 generic-lambda


【解决方案1】:

要在 Code::Blocks 中使用 C++14 编译源代码,首先需要下载并安装支持 C++14 功能的编译器。

您可以在 Windows 上执行以下操作:

  1. here(特定版本)或from official site下载MinGW到choose options
  2. 解压到例如:C:\(结果为 C:\MinGW)
  3. 开放代码::区块
  4. 转到设置 => 编译器。
  5. 转到“工具链可执行文件”。
  6. 在顶部字段“编译器的安装目录”中,将目录更改为您提取编译器的目录。例如 C:\MinGW。
  7. 更改“Program Files”下的所有必要文件以匹配 C:\MinGW\bin 下的文件:

  1. 在点击“确定”之前,转到最左侧的选项卡“编译器设置”。
  2. 选择“编译器标志”。
  3. 为简单起见,右键单击列表中的某处并选择“新标志”:

  1. 输入以下内容并单击“确定”,然后勾选您刚刚创建的标志框:

  1. 最后,您需要指定调试器路径。转到“设置”=>“调试器”,单击左侧的“默认”并输入可执行文件的新完整路径:


现在,尝试编译一个具有 C++14 特性的程序:

#include <iostream>
#include <string>
using namespace std;

auto main() -> int
{
    auto add_two([](auto x, auto y){ return x + y; });

    cout << add_two("I"s, "t"s) << " works!" << endl;
}

【讨论】:

  • 我绝对无意在我管理的任何机器上执行此操作,但我不得不提高它。这个答案是 Stellar,大写为 S。
  • 另一件事是在“设置>编译器”页面中右键单击,并将-std=c++14添加到从C构建中排除的标志列表中。否则,构建.c 文件将获得该标志,从而导致警告。然后,您将项目设置为同时拥有-std=c++14 -std=c11
  • 我按照程序,测试代码编译没有问题。但是下面的代码仍然会导致错误char *m_data = new char[14]{ "Hello, World!" }; 这行代码虽然在 VS 2015 上编译。
  • 嗨 Andreas,我有一个程序,其中包含“codecvt”(#include ) 目录。执行上述步骤后,我仍然收到错误消息,例如“致命错误:codecvt:没有这样的文件或目录”。请给我一个解决问题的解决方案。虽然相同的代码在在线 c++14 编辑器或编译器(如.Ideone、codechef 等)上运行良好
【解决方案2】:

一位谦虚的新手可以提出一个小建议吗?对测试 C++14 代码的小修改,以允许生成的 .exe 文件独立于创建它的 IDE 运行,稍作修改的测试程序如下:

 #include <iostream>
 #include <string>

 using namespace std;

 auto main() -> int
 {
     auto add_two([](auto x, auto y){ return x + y; });

     cout << add_two("I"s, "t"s) << " works!" << endl;

     cout << "press enter to continue..." << endl;
     cin.ignore(10, '\n');
     cin.get();
 }

谢谢大家,祝所有程序员同胞们平安,尤其是 Igor Tandetnik。

【讨论】:

    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 2015-04-18
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多