【发布时间】:2018-10-17 14:46:57
【问题描述】:
我很难在第一个 Google 页面上找到明确的答案。 我很难理解“语言标准”这个词。我的意思是,新标准应该在软件层面实施,对吧?这不仅仅是用户现在可以做的事情的列表,对吧? 我使用委托构造函数,得到一个警告:
[警告] 委托构造函数仅适用于 -std=c++11 或 -std=gnu++11
虽然事情似乎按我希望的方式工作。这样的警告很重要吗?如果是这样,我该如何摆脱它?
【问题讨论】:
我很难在第一个 Google 页面上找到明确的答案。 我很难理解“语言标准”这个词。我的意思是,新标准应该在软件层面实施,对吧?这不仅仅是用户现在可以做的事情的列表,对吧? 我使用委托构造函数,得到一个警告:
[警告] 委托构造函数仅适用于 -std=c++11 或 -std=gnu++11
虽然事情似乎按我希望的方式工作。这样的警告很重要吗?如果是这样,我该如何摆脱它?
【问题讨论】:
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++ 安装程序。)
【讨论】:
-std=gnu++14。默认情况下,没有任何版本的 gcc/g++ 完全符合。 C 的默认值为-std=gnuNN,C++ 的默认值为-std=gnu++NN,其中“gnu”表示具有 GNU 扩展的指定标准。 NN 的值因版本而异,但不会经常更改。