导读:C++语言正式进入C++20的标准时代,新的编码方式开启。
C++ 世界正悄然发生着翻天覆地的变化。
作为现代级 C++ 开发核心的强大编译器,GCC 正将发布的C++16 版本中将 C++20 作为默认标准。
如果你自认为已经掌握了 C++,那么请做好心理准备。
这是因为,这不仅仅是一次技术上的调整,而是一次足以撼动整个代码库、工具,甚至影响我们编写和思考 C++ 的方式的重大变革。
对于大多数人来说,这种变化就像走进一个一夜之间家具被重新摆放过的房间——既熟悉又陌生。为什么这次很重要?因为 C++20 引入了变革性的特性,通过模块、概念、协程等,重新定义了当今优秀 C++ 的面貌。
本文将和大家共同探讨 GCC 16 提议的默认开关的意义,解释为何它姗姗来迟,以及作为一名开发者,无论是新手还是资深开发者——如何才能在这个不断发展的环境中生存并取得成功。
正式切换
回顾过往历史,GCC 11 的默认规范是在 2020 年从 C++14 更改为 C++17。
在本月初期,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”。
结语
可以确定的是,如果更换为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 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。