LLVM 16 默认标准从 C++14 转为 C++17

2017 年 12 月,一则提议将 LLVM/Clang 的 C++ 默认方言(default dialect)从 GNU++98 切换到 GNU++14 ,一直持续到前几天的 LLVM/Clang 15 版本。而 GCC 在 GCC 11 版本就已将默认标准设为 GNU++ 17 。

 GNU++ 即带有 GNU 扩展的 C++ 语言,GNU 扩展特性可参考 GNU extensions to the C and C++ languages

LLVM 15.0 发布后,LLVM/Clang 16.0 版本即将迎来一个重大变化: GNU++17 将成为 LLVM 默认的 C++ 和 ObjectiveC++ 版本。

Clang 的 C++17 支持非常稳定了,只有一些微小的细节需要修复。事实上,Apple 的 DriverKit 已经在上游 LLVM 中进行了更改(D121911 [Clang] 添加 DriverKit 支持 ),默认使用 GNU++17 而不是 GNU++14。

目前相关的补丁已经发布,没有突发状况,默认标准转为 GNU++ 17 应该是板上钉钉的事情。

切换默认版本之后,对于当前与 C++17 不兼容且依赖默认值的 C++ 代码库,则需要设置 -std=gnu ++14 或更早版本,以保持与默认值的兼容性。

猜你喜欢

转载自www.oschina.net/news/209604/llvm-16-switch-to-gnu-17-as-default-dialec