我正在学习为我的 Arduino 编程,但我在 C++ 方面有相当扎实的背景,这意味着我很失望地发现我无法使用 C++ 标准库。我一直在四处寻找确切的原因,到目前为止,唯一合理的解释是 AVR-GCC 不符合 C++ 语言标准。
现在,我知道大多数编译器与标准的偏差很小,但我认为一定有一些非常大的东西将 AVR-GCC 与 GCC、Clang 或我以前使用过的任何其他编译器分开。就像一些完全缺失的非常重要的功能,或其他东西。例如,为什么我不能使用必须有充分的理由std::vector
。它太有用了,不能无缘无故地离开。
那是什么?AVR-GCC 方言中使 C++ 标准库无法在 Arduino 上运行的巨大漏洞是什么?我问这个不仅仅是出于好奇,因为如果语言中存在巨大的漏洞,那么我需要先了解它们,然后再犯一些我没想到的未定义行为。