GNU C 何时支持C 11,而无需明确要求
When will Gnu C++ support C++11 without explicitly asking for it?
当前,使用G -4.8.1您必须通过
在C 11模式中编译文件g++ -std=c++11 -o prog.x prog.cpp
当我可以说
时,是否有计划g++ -o prog.x prog.cpp
编译prog.cpp
?
也许prog.cpp
有
-
#include <regex>
-
thread_local
-
class Widget { int member = 5; }
-
MyType operator"" myt(const char*, sze_t);
- 等等。
gcc 6.0:https://gcc.gnu.org/gcc-6/changes.html
C 的默认模式现在是
-std=gnu++14
而不是-std=gnu++98
。
我认为最接近的答案是从 info gcc
命令:
在2011年出版了经过修订的ISO C 标准为ISO/IEC 14882:2011,被称为C 11;在发布之前 通常称为C 0x。C 11包含对 C 语言,其中大多数是在实验中实现的 GCC中的C 11模式。有关C 11功能的信息 在实验C 11模式下可用,请参阅 http://gcc.gnu.org/projects/cxx0x.html。选择此标准 GCC,使用选项'-std = C 11';获取所有诊断 标准要求,您还应指定" - ppedantic"(或 ' - ppedantic-errors'如果您希望它们是错误而不是错误 警告)。
http://gcc.gnu.org/projects/cxx0x.html页面说:
重要:GCC对C 11的支持仍然是实验性的。一些 功能是根据早期建议实现的,没有尝试 更新时将使它们保持向后兼容性 要匹配最终的C 11标准。
libstdc 页面还表明它是不完整的。(我什至不认为regex
已经实现。)
史蒂夫·杰索普(Steve Jessop)的回答基本上在上一段中说了同样的话,但引用了他的答案的第一部分:
c 11已经标准了几年,但编译器不是 将其默认模式切换为C 11,直到:
- 绝对最小值,C 11支持在该编译器及其使用的库中完成。如果编译器,也稳定 作者对可靠性完全有任何关注。
- 最好是,编译器的主要版本号增加,因为C 11并未完全落后于C 03。
- 理想情况下,按照众所周知的时间表,以便用户可以为更改做准备。
更新:原始答案在过去28个月中已过时。根据Nobar的回答,GCC 6.1默认情况下用GNU扩展支持C 14。GCC 6.1于2016年4月27日发布。我很惊讶,但很高兴看到新标准如此快速地采用!
至于原始答案的其余部分,我仍然看到值的价值,以使该部分回答如何使某些标志"默认"。所以我把它放在下面。
当我可以说[...]
时,是否有计划
您可以在makefile中定义默认标志,然后您只能说make
。
我如何在GCC中启用C 11的答案?应该让您入门(或某些Makefile教程)。
似乎在Stackoverflow上经常弹出的另一种建议是添加bash别名alias g++="g++ --std=c++0x"
,请参见此处。但是,我个人不会这样做,这可能导致令人不愉快的惊喜。C 11发生了破坏的变化。我会创建自己的makefile并简单地键入make
。
默认情况下,GCC 5.0似乎将具有GNU11(C 11 afaik的方言),并在更改中共享C 11的改进。请参阅https://gcc.gnu.org/gcc-5/changes.html。看来它也将为C 14提供一些支持。
就 @marc-glisse共享的Bugzilla方案而言,更有趣的陈述似乎不在桌子上,请参阅https://gcc.gnu.org/gcc-5/criteria.html详细信息: -
Bugzilla打开的所有回归都已分析,所有回归均已分析 被认为不太可能影响大多数用户,或者决心 对受影响的用户的影响最小。例如,印刷 诊断的错误可能相对常见,但也很少 对用户的影响。
通常,编译器生成不正确代码的回归, 或拒绝编译有效程序,被认为是 足够严重以阻止释放,除非有很大的 缓解因素。-GCC发布标准页
时间表确实给出了一些想法,即何时和是否会发生https://gcc.gnu.org/develop.html#timeline
因此,希望我们应该看到一个新的GCC,到2015年默认为C 11。。
- 编译时未启用intel oneApi CUDA支持
- 何时在引用或唯一指针上使用移动语义
- POCO::PostgreSQL:如何将std::vector支持添加到`Binder::bind`
- 使用CMake检测支持的C++标准
- 为什么istream不支持右值提取
- 何时提供默认参数作为模板参数
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- 扩展光电二极管探测器以支持多个传感器
- MSVC是否支持C++11样式的属性而不是__declspec
- C++-明确何时以及如何调用析构函数
- 在使用GPU支持编译Tensorflow时,会遇到CUDA_TOOLKIT_PATH未绑定变量
- 当使用比格式支持的精度更高的精度来显示数字时,会写出什么数据
- 在以唯一ptr为值的C++映射中,动态内存何时会被销毁
- 何时应通过引用传递矢量参数而不是按值传递矢量参数?
- 如果非动态变量被指针引用,何时超出范围?
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 错误:(-210:不支持的格式或格式组合)功能'create'中的硬件视频解码器不支持视频源
- GNU C 何时支持C 11,而无需明确要求
- 如果 C++ 中的 DLL 不支持二进制封装,那么何时可以使用它们?
- 何时将对AUDCLNT_STREAMFLAGS_AUTOCONVERPCM的支持添加到WASAPI中