C++ 是什么决定了哪个版本的 C++ 可以 运行 在特定的架构上(比如 Arduino)

C++ What determines which version of C++ can run on a specific architecture (like Arduino)

我知道 C++ 有细微的变化,例如 C++11 或 C++14。如果我有微控制器或其他计算机设备,是什么决定了代码是否可以在该计算机上 运行。 IE。是什么决定了 Arduino 是否可以 运行 C++14 代码?

是我机器上的编译器、其他系统处理器上的解释器还是什么?

这是编译器的版本。如果编译器支持 syntax/C++ 版本并且编译器适用于平台 - 那么将生成有效代码。

@Kiril Kirov 的回答是正确的,这主要取决于编译器的可用性,但其他一些因素也很重要。

编译器负责将C++代码转换为本机指令集中的机器代码。 它还依赖于 c++ 标准库,显然需要使用所述编译器为您的系统编译。 请注意,在此操作之后,生成的代码与通过其他方式(使用 C 编译器或手动编写)生成的其他本机代码没有本质区别,因此没有理由不由您的微处理器执行。

您还需要一个 linker 知道目标微控制器的内存布局(处理器+RAM+闪存或 ROM)。

您还需要一种将代码闪存到系统的方法,例如 USB link 和驱动程序。

在 arduino 的情况下,您可以轻松找到所有这些元素,因为它是一个已知平台(Arduino 在 AVR 或 ARM 上运行,具体取决于版本,因此可能的编译器分别是 avr-gccarm-none-eabi-gcc),但在更奇特的情况下,它不是给定的(很可能你不能刷你的万事达卡)。

只要有人为它编写了编译器,任何计算机平台原则上都可以支持任何编程语言。

处理器本身不知道使用哪种编程语言,但即使不是,也不一定排除通过源代码翻译在编译器中支持其他语言或方言。

您的 Arduino 是否获得新的 C++ 标准支持完全取决于提供您正在使用的编译器工具链和标准库的人员的心血来潮。