编译器语言支持是否适用于所有编译器端口

问题描述

我正在使用 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,您应该拥有该编译器版本的所有可用功能。