gpt4 book ai didi

c++ - 替代标准 std::string 数据类型和 print()

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:54:48 25 4
gpt4 key购买 nike

我正在使用本地一家公司开发的一款新微 Controller 。我目前正在移植库以与该微 Controller 一起使用。现在的主要问题是微 Controller 的 C++ 库不支持 std::string 数据类型。我是 C++ 的新手,因此我确实需要帮助,因为当浏览器请求 ip 地址时我需要打印一个字符串。

这里是微 Controller wiki的解释"

SXC 库和 XInC2 不支持动态内存分配,因此没有堆。这意味着目前不支持使用动态分配内存的数据类型。它们可能会包含在 SXC 的 future 版本中,但目前在许多情况下,由于实现此类类型而导致的性能不佳可能会令人望而却步。例如,目前不支持 std::string 数据类型。

这也意味着不包括与动态内存相关的关键字——这包括 new、delete 以及类似的 C 方法 malloc 和 free。

RTTI 或运行时类型信息也被禁用。但是,这并不完全禁止多态性,因为仍然支持虚函数和虚继承。例如,由于依赖于 RTTI,因此不支持多态类型之间的 dynamic_cast。仍然支持 static_cast 和 reinterpret_cast。异常(exception)情况目前已被禁用,但正在考虑实现。这意味着不支持关键字 throw、try 和 catch。”

除了字符串操作库还有其他选择吗?

谢谢

最佳答案

在这种情况下,我发现将“没有堆”理解为“我们懒得创建堆,所以你必须这样做”很有用。 mallocfree 不受“支持”这一事实仅意味着您可以自由提供自己的实现,并且它们不会与现有定义冲突。

因此,最好的解决方案可能是提供您自己的简单 malloc/free 并在此基础上编写您自己的 string 类。

现在有关于性能不佳的警告。这几乎是不可避免的。如何进行字符串操作并不重要。原因真的很经济:如果你想从廉价的微 Controller 中获得性能,你会得到一个标准的设计。例如。 8008 或 Cortex-M。你想要一个由数十亿而不是数千人制造的产品。

关于c++ - 替代标准 std::string 数据类型和 print(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21459539/

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