gpt4 book ai didi

c++ - 如何结合 C++ 字符串和 Arduino 字符串?

转载 作者:IT老高 更新时间:2023-10-28 23:18:59 25 4
gpt4 key购买 nike

我一直在为我的项目编写一个库(现在我使用的是 Arduino)。我遇到的问题是 string在 C++ 中和在 Arduino 中有所不同。

也就是说,我希望我的库独立于 Arduino,所以我使用 #include <string>然后声明 string s; .然而,在 Arduino 中,字符串由 Arduino 定义并声明为 String s2 .

当我在草图中包含我的库时,我得到 error: string: No such file or directory在我尝试包含 C++ 字符串库 (#include <string>) 的那一行。

有没有办法让 Arduino 使用 C++ 字符串库,或者在编译时将字符串转换为 Arduino 字符串?

最佳答案

几件事:

  1. 我不确定您独立于 Arduino 做某事的理由。通常,对微 Controller 进行编程不是非常可模块化的,并且可能与经典计算机程序非常不同。如果你真的想独立于任何微 Controller 和任何平台,你仍然可以使用 C 风格的字符串,带有 char *指向一个字符数组。
  2. 做自己想做的事一点都不轻松。首先,您需要std::string 的源代码。图书馆。做一个#include <string>还不够:您还必须为 AVR 平台编译字符串库。
  3. 与经典计算机程序相比,Arduino 处理 C++ 代码的方式存在一些“限制”:例如,运算符 newdelete没有实现。此外,std::string 可能还需要其他东西。实现,因此需要管理大量依赖项,或者代码源对于 Arduino 来说太大。

对于像 Arduino 这样的 AVR 微 Controller ,有一些经典字符串工具的实现,但它们是针对 C 风格的字符串以过程方式(而不是面向对象的方式)完成的。例如,对于 avr-gcc 附带的 avr-libc,您可以在此处查看函数列表: avr-libc string.h你甚至有好老printf : avr-libc stdio.h

如果您在代码中添加好的头文件,可以将它们与 Arduino 一起使用,但要注意代码的大小!只需使用 printf可以将大小增加几千字节,这对于微 Controller 来说可能是巨大的,具体取决于您的需要。

总之,在我看来,唯一可移植的方法是使用 char *字符串,http://arduino.cc/en/Reference/String

关于c++ - 如何结合 C++ 字符串和 Arduino 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9839990/

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