【问题标题】:Does Dev-Cpp 5.11 support C++ 11?Dev-Cpp 5.11 是否支持 C++ 11?
【发布时间】:2018-10-17 14:46:57
【问题描述】:

我很难在第一个 Google 页面上找到明确的答案。 我很难理解“语言标准”这个词。我的意思是,新标准应该在软件层面实施,对吧?这不仅仅是用户现在可以做的事情的列表,对吧? 我使用委托构造函数,得到一个警告:

[警告] 委托构造函数仅适用于 -std=c++11 或 -std=gnu++11

虽然事情似乎按我希望的方式工作。这样的警告很重要吗?如果是这样,我该如何摆脱它?

【问题讨论】:

    标签: c++11 dev-c++


    【解决方案1】:

    Dev-Cpp 只是编码器的 IDE(前端),其后面是 MinGW,使用 GCC 4.9.2 作为编译器*。因此,每次您单击“运行”或“构建”时,都是 GCC 来完成这项肮脏的工作。 GCC 默认使用 C++03 标准,要使用更新的标准,您必须通过编译器标志 -std=c++11 明确告诉它。你可以在Tools->Compiler Options->Settings->Code generation->Language standard (-std)改。

    我不确定为什么委派构造函数可以在没有 C++11(可能是一些 GCC 功能)的情况下工作,但可以肯定的是,如果没有 -std=c++11,您将无法使用 C++11 库。它也会消除警告。

    (* 假设您使用默认的 Dev-C++ 安装程序。)

    【讨论】:

    • “我不确定为什么委派构造函数可以在没有 C++11 的情况下工作”——GCC 没有针对 C++03、C++11、C++14 的单独 C++ 编译器,等等,它有一个编译器,在每种编译模式下的行为略有不同。添加委托构造函数后,自然的结果是它们在所有模式下都可用(因为它不与任何 C++03 特性冲突)。 GCC 开发人员可能会在该模式下将其作为错误,或者可以默默接受它,但显然认为警告会提供更好的用户体验。
    • 默认值取决于您使用的 gcc 版本。例如 g++ 7.3 默认为-std=gnu++14。默认情况下,没有任何版本的 gcc/g++ 完全符合。 C 的默认值为-std=gnuNN,C++ 的默认值为-std=gnu++NN,其中“gnu”表示具有 GNU 扩展的指定标准。 NN 的值因版本而异,但不会经常更改。
    猜你喜欢
    • 2013-10-15
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2019-04-27
    • 2012-01-08
    • 2019-03-24
    • 2015-12-24
    • 2015-12-30
    相关资源
    最近更新 更多