Arduino 是否完全支持 C++ 标准库?
Is the C++ Standard Library fully supported on Arduino?
不是询问 <string>
,而是询问 Standard-Library 作为一个整体用于 micro-controllers。
我还没有 Arduino 板来执行代码,正如标题所说,我很好奇 C++ Standard-Library 是否在 Arduino 上得到完全支持并且已经是 Arduino 的一部分 IDE。不言而喻,Standard-Library 可能是目前最高效、经过全面测试且 resource-minimal 公开可用的 C++ 代码,这将使为像 Arduino 这样的微控制器编写代码变得更加容易。
或者,我是不是漏掉了 Arduino/micro-controllers 的要点?那,因为他们的资源如此有限,大多数代码必须完全针对特定功能量身定制,而不是通用或模板化?
如果 Standard-library 不是 Arduino IDE 的一部分,那么我如何包含特定的库,例如 <algorithm>
和 <bitset>
?
Arduino 与其他嵌入式系统项目有很大不同。一方面,它使用自己的基于 C/C++ 的 language。另一方面,您正在处理令人难以置信的专业软件,您不太可能需要 <string>
或 <bitset>
的大量抽象。与自制内核相比,您在其中处理桌面级硬件,而标准库有助于开发。此外,自制内核最终希望成为“自托管”,即它们可以将 GCC 和 libstdc++ 移植到用户空间。同样,这是您在 Arduino 环境中不会看到的东西。
现在当你谈论 libraries that come with Arduino, it's a completely different story. These are written in C or C++ and could benefit from a ported standard library, but it's unlikely to be helpful. Porting the STL is no easy task and it is very, very big 时。大多数功能都超出了必要的范围——您真的需要 <string>
或 <bitset>
来读取或写入端口的字节吗?然后从开发人员的角度考虑成本和复杂性:Arduino 开发人员将承担这项艰巨的(双关语不是故意的)任务来实现它, 和 在大多数情况下支持它它将被闲置或删除(想想自定义分配器。)
最后一点,市面上有大量不同规格的 Arduino 开发板。标准库是建立在现有 C 库之上的抽象。在某一时刻,您将不得不埋头苦干,实际为 C 库和运行时编写代码,从而使标准库本质上不可移植(想想 libstdc++-arm-none-eabi-newlib)。
现在,如果您对此不满意,您仍然可以按照他们的 tutorial 为 Arduino 编写您自己的库来移植 STL 的一个子集。
不是询问 <string>
,而是询问 Standard-Library 作为一个整体用于 micro-controllers。
我还没有 Arduino 板来执行代码,正如标题所说,我很好奇 C++ Standard-Library 是否在 Arduino 上得到完全支持并且已经是 Arduino 的一部分 IDE。不言而喻,Standard-Library 可能是目前最高效、经过全面测试且 resource-minimal 公开可用的 C++ 代码,这将使为像 Arduino 这样的微控制器编写代码变得更加容易。
或者,我是不是漏掉了 Arduino/micro-controllers 的要点?那,因为他们的资源如此有限,大多数代码必须完全针对特定功能量身定制,而不是通用或模板化?
如果 Standard-library 不是 Arduino IDE 的一部分,那么我如何包含特定的库,例如 <algorithm>
和 <bitset>
?
Arduino 与其他嵌入式系统项目有很大不同。一方面,它使用自己的基于 C/C++ 的 language。另一方面,您正在处理令人难以置信的专业软件,您不太可能需要 <string>
或 <bitset>
的大量抽象。与自制内核相比,您在其中处理桌面级硬件,而标准库有助于开发。此外,自制内核最终希望成为“自托管”,即它们可以将 GCC 和 libstdc++ 移植到用户空间。同样,这是您在 Arduino 环境中不会看到的东西。
现在当你谈论 libraries that come with Arduino, it's a completely different story. These are written in C or C++ and could benefit from a ported standard library, but it's unlikely to be helpful. Porting the STL is no easy task and it is very, very big 时。大多数功能都超出了必要的范围——您真的需要 <string>
或 <bitset>
来读取或写入端口的字节吗?然后从开发人员的角度考虑成本和复杂性:Arduino 开发人员将承担这项艰巨的(双关语不是故意的)任务来实现它, 和 在大多数情况下支持它它将被闲置或删除(想想自定义分配器。)
最后一点,市面上有大量不同规格的 Arduino 开发板。标准库是建立在现有 C 库之上的抽象。在某一时刻,您将不得不埋头苦干,实际为 C 库和运行时编写代码,从而使标准库本质上不可移植(想想 libstdc++-arm-none-eabi-newlib)。
现在,如果您对此不满意,您仍然可以按照他们的 tutorial 为 Arduino 编写您自己的库来移植 STL 的一个子集。