问题描述
我正在使用 GNU Arm Embedded Toolchain 10-2020-q4-major (arm-none-eabi-* 10.2.1),我想利用现代 C++ 功能。
所以我试图找出此特定工具链可以使用哪些 c++ 特性(语言核心特性以及 libstdc++ 特性)。我通读了这个矩阵 https://gcc.gnu.org/projects/cxx-status.html,它们似乎没有区分不同的编译器端口。
例如,我如何确定我是否可以使用 C++17 或 C++20 功能?
问候, 雨果
解决方法
正如您在列出的 gcc.gnu 站点上看到的那样,列出了所有 C++17 和 C++20 功能。 “在 GCC 中可用?”指定需要哪个版本的 GCC 编译器才能提供给定的功能。它本质上不是您的工具链,而是定义您的功能集的编译器(作为该工具链的一部分)。
在您给定的情况下,您将 GCC 编译器用于 arm-non-eabi 架构,不会更改此功能集,编译器版本会更改。因此,使用 arm-non-eabi-g++-10.2.1,您应该拥有该编译器版本的所有可用功能。