在Code::Blocks中启用`-std=c++14`标志

11

我已经在Windows上安装了Code::Blocks,并希望编译像泛型lambda这样的C++14代码,但我从codeblocks.org下载并安装的二进制版本不支持标志< br>-std=c++14

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


我建议安装MinGW-w64。它是原始MinGW的一个活跃分支,现在已经失修。当前最佳答案中给出的链接是一个人特定的MinGW-w64构建;但是如果您从[官方网站](http://mingw-w64.org)获取它,您可以使用在线安装程序并只需[选择所需选项](https://dev59.com/KF0a5IYBdhLWcg3wxrSN)。 - M.M
2个回答

40
要在Code::Blocks中使用C++14编译源代码,首先需要下载并安装支持C++14特性的编译器。以下是在Windows上的操作步骤:
1.从此处(特定版本)或官方网站下载MinGW,并选择选项
2.将其解压到比如C:\(结果将是C:\MinGW)。
3.打开Code::Blocks。
4.转到“设置”=>“编译器”。
5.转到“工具链执行文件”。
6.在“编译器的安装目录”顶部字段中,更改目录为您提取编译器的目录。例如:C:\MinGW。
7.更改“Program Files”下的所有必要文件以匹配C:\MinGW\bin下的文件。
8.在单击“确定”之前,转到最左侧的选项卡“编译器设置”。
9.选择“编译器标志”。
10.为了简化,右键单击列表中的某个位置,然后选择“新标志”:
11.键入以下内容并单击“确定”,并选中您刚刚创建的标志框:
12.最后,您需要指定调试器路径。转到“设置”=> “调试器”,在左侧点击“默认”,并输入可执行文件的新完整路径:
现在,尝试使用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;
}

2
我绝对不打算在我管理的任何机器上执行此操作,但我被迫进行了更新。这个答案是以大写字母S开头的杰出的 - WhozCraig
另一件要做的事是在“设置>编译器”页面中右键单击,并将-std=c++14添加到从C构建中排除的标志列表中。否则,构建.c文件将获得该标志,从而导致警告。然后,您将项目设置为同时具有-std=c++14 -std=c11 - M.M
我按照流程操作,测试代码编译没有问题。但是下面这行代码仍然会导致错误 char *m_data = new char[14]{ "Hello, World!" }; 不过这行代码在VS 2015上可以编译通过。 - user2165
你好Andreas,我有一个程序,其中包含“codecvt”(#include <codecvt>)目录。按照上述步骤后,仍然出现错误消息:“致命错误:codecvt:没有这样的文件或目录”。请给我提供解决问题的解决方案。而在在线C++14编辑器或编译器(如Ideone、codechef等)中,相同的代码可以正常工作。 - PRAFUL ANAND

-1

一个谦虚的新手能否提出一个小建议?对测试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。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接