我正在学习Arduino编程,但我有相当扎实的C背景,这意味着我非常失望地发现我不能使用C标准库。我一直在寻找确切的原因,到目前为止,唯一合理的解释是AVR-GCC不符合 C++ 标准。
现在,我知道大多数编译器都与标准有微小的偏差,但我认为AVR-GCC与GCC,Clang或我以前使用过的任何其他编译器之间一定有很大的区别。比如一些非常重要的功能完全缺失,我不能使用std::vector
,一定有一个很好的理由。它太有用了,不能无缘无故地放弃。
那是什么AVR-GCC方言中的巨大漏洞是什么使得C++标准库在Arduino上无法工作?我问这个问题不仅仅是出于好奇,因为如果语言中存在巨大漏洞,那么我需要在我陷入一些我没有预料到的未定义行为之前了解它们。
2条答案
按热度按时间at0kjp5o1#
我只是在尝试在一个结构中使用一个灵活的数组(可变大小的数组)时遇到了问题。没有编译器的抱怨,但它就是不起作用。我不得不改变使用一个指向结构外部定义的数组的指针。
1sbrub3j2#
AVR-GCC是clearly the work of hobbyists。基本上,没有人愿意承担编写标准库实现的艰苦工作。编写标准库对于桌面平台来说不是一件小事,Arduino有限的功能只会使它变得更加困难。