gpt4 book ai didi

c++ - 为什么 C++11 编译器支持仍然需要一个标志?

转载 作者:IT老高 更新时间:2023-10-28 21:46:19 30 4
gpt4 key购买 nike

我了解默认情况下不应启用编程语言的实验性功能,因此我欢迎使用标志 -std=c++0x-std=c++1y。然而,几年前 C++11 已经成为标准。为什么编译器仍然需要 -std=c++11 来启用对其功能的支持?

最佳答案

C++11 已经成为标准几年了,但编译器不会将其默认模式切换到 C++11,直到:

  • 至少,该编译器及其使用的库都支持 C++11。如果编译器编写者对可靠性有任何顾虑,那么它也是稳定的。
  • 最好在编译器中增加主要版本号,因为 C++11 不完全向后兼容 C++03。
  • 理想情况下,按照众所周知的时间表进行,以便用户为变化做好准备。

基本上,很多人(和 makefile)依赖于编译器是一个符合 C++03 的编译器,或者至少依赖于它的不符合性是已知的。由于 C++11 引入了不符合 C++03 的新实例,因此这种变化可能会带来创伤。

可以说,任何依赖 C++03 的人都应该指定一个选项来说明这一点,并且更改为默认模式对他们没有任何影响。但是,一旦您记录了编译器的默认设置,人们就会有意或无意地依赖它。

特别是对于 gcc,4.8.2 手册页说“对 C++11 的支持仍处于试验阶段”。所以我认为最终你的问题的答案可能是正确实现 C++11 需要 2 年多的时间,即使是从标准草案完成的所有工作开始。

关于c++ - 为什么 C++11 编译器支持仍然需要一个标志?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20373626/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com