在本月初期,GCC 开发者就曾一起讨论过,在未另行指定的情况下, GCC 编译器的默认C++ 标准应切换为 C++20。
如今,这一变更已经正式生效。目前,当你编译 C++ 代码时,默认使用 C++20(更准确地说是 GNU++20 方言)而非 C++17/GNU++17 的变更,并已合并到 GCC 版本中。
GCC开发者发现他们自身的代码库尚未完全兼容 C++20,但他们本周也一直在修复这些问题,以确保 GCC 16 能够与 C++20 默认标准完美兼容。
从11月19号的变更实现了默认使用 C++20 (GNU++20), 而不再是 C++17 的转变。今天,GCC Git 仓库中仍在继续修复编译器代码库中存在的 C++20 相关问题。
尽管GCC 16.1 稳定版已进入三四月份的 第三阶段开发,但 C++20 默认规范的变更已获批准,最新的 GCC Git 代码也已针对这一现代默认规范进行了全面更新。
对于尚未准备好支持 C++20 且目前未指定“-std=c++17”或类似选项的 C++ 代码库,此默认规范的变更可能会导致一些构建问题。至少对于那些定期使用 GCC Git 进行测试的开源项目而言,还有几个月的时间来确保其代码库符合 C++20 标准,或者在其构建系统中指定“-std=c++17”。
回顾过往的历史,GCC 11 的默认规范在 2020 年已从 C++14 更改为 C++17。
结语
如果更换为GCC20,新的警告会出现,行为也会发生变化——无论代码库大小,都需要进行相应的调整。GCC 的这一举措鼓励开发者更多地采用现代的编程惯用法。
作者:洛逸
参考:
https://www.phoronix.com/news/GCC-16-Now-CPP20-Default
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=004438857554f47eb5491d59b067e56fdacf0e74
本篇文章为 @ 行动的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。