【发布时间】:2013-04-29 10:23:37
【问题描述】:
我正在学习为我的 Arduino 编程,但我在 C++ 方面有相当扎实的背景,这意味着我很失望地发现我无法使用 C++ 标准库。我一直在四处寻找确切的原因,到目前为止唯一合理的解释是 AVR-GCC 不符合 C++ 语言标准。
现在,我知道大多数编译器与标准的偏差很小,但我认为肯定有一些非常大的东西将 AVR-GCC 与 GCC、Clang 或我以前使用过的任何其他编译器分开.就像一些完全缺失的非常重要的功能,或其他东西。例如,为什么我不能使用std::vector 一定有充分的理由。它太有用了,不能无缘无故地离开。
那是什么? AVR-GCC 方言中使 C++ 标准库无法在 Arduino 上运行的巨大漏洞是什么?我问这个不仅仅是出于好奇,因为如果语言中存在巨大的漏洞,那么我需要先了解它们,然后再犯一些我没想到的未定义行为。
【问题讨论】:
-
这就是 C++,它在嵌入式世界中具有所有不合规、不兼容和整体糟糕的支持。这很不幸,我知道。进入新世纪已有 13 年,有时感觉我们仍处于 90 年代。
-
在我看来,大多数嵌入式 c++ 平台不附带标准库,主要是因为无论如何没人会真正使用它
-
@PlasmaHH:部分原因,但这听起来更像是一个借口。
-
@Haroogan:也许吧,但它非常好。如果没人会使用它,我不想编写和维护一个库。
-
@Fanael - 这就是静态链接的全部意义:链接器提取实际使用的代码,而不是整个库。库本身的大小与可执行文件的大小无关。
标签: c++ arduino avr-gcc c++-standard-library