gpt4 book ai didi

c++ - Arduino 是否完全支持 C++ 标准库?

转载 作者:可可西里 更新时间:2023-11-01 17:55:51 26 4
gpt4 key购买 nike

不询问 <string>但关于用于微 Controller 的标准库作为一个整体。

我还没有 Arduino 板来执行代码,正如标题所说,我很好奇 C++ 标准库是否在 Arduino 上得到完全支持并且已经是 Arduino IDE 的一部分。不用说,标准库可能是目前最高效、经过全面测试且资源最少的公开可用 C++ 代码,并且将使为像 Arduino 这样的微 Controller 编写代码变得更加容易。

或者,我是否以某种方式错过了 Arduino/微 Controller 的要点?那,因为他们的资源如此有限,大多数代码必须完全针对特定功能量身定制,而不是通用或模板化?

如果标准库不是 Arduino IDE 的一部分,那么我如何包含特定的库,例如 <algorithm><bitset>

最佳答案

Arduino 与其他嵌入式系统项目有很大不同。一方面,它使用自己的 language基于 C/C++。另一方面,您正在处理令人难以置信的专业软件,您不太可能需要 <string> 的大量抽象。或 <bitset> .与自制内核相比,您在其中处理桌面级硬件,而标准库有助于开发。此外,自制内核最终希望成为“自托管”,即它们可以将 GCC 和 libstdc++ 移植到用户空间。同样,这是您在 Arduino 环境中不会看到的。

现在当你谈论 libraries Arduino 附带的,这是一个完全不同的故事。它们是用 C 或 C++ 编写的,可以从移植的标准库中获益,但不太可能有帮助。移植 STL 并非易事,它是 very, very big .大多数功能都远远超过必要的 - 你真的需要一个 <string> 吗?或 <bitset>读取或写入字节到一个端口?然后从开发人员的角度考虑成本和复杂性:Arduino 开发人员将承担这项艰巨的(双关语不是故意的)任务来实现它,在大部分进行时支持它未使用或被删除(想想自定义分配器。)

最后一点,市面上有大量不同规范的 Arduino 开发板。标准库是建立在现有 C 库之上的抽象。有时,您将不得不埋头苦干,实际为 C 库和运行时编写代码,这使得标准库本质上不可移植(想想 libstdc++-arm-none-eabi-newlib)。

现在,如果您对此不满意,您仍然可以按照他们的 tutorial 移植 STL 的一个子集。关于为 Arduino 编写您自己的库。

关于c++ - Arduino 是否完全支持 C++ 标准库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com