0

我正在从事嵌入式项目,使用Zephyr RTOS和 ARM 嵌入式微控制器,如 STM32 Nucleo 系列(Cortex M4/0)。

最近,由于最近版本的 Zephyr 对 C++ 的支持显着改进,我正在考虑从 C 开发转向现代 C++。

默认情况下,Zephyr 包含 C 标准库,但不包含 Cpp 的 STD。

Zephyr 实际上添加了对 Cpp 标准库的可选支持,这似乎工作得很好。然而,它需要大量的闪存使用(我的微控制器闪存中接近 65%,没有我的代码!)。

因此,我正在尝试寻找在没有实际标准库(包括内存/实用程序头文件)的情况下使用现代 C++ 的替代方法。

我考虑过将Boost.smart_ptr用于智能指针,但我想知道在我的情况下我应该如何使用移动语义 (std::move)。

我应该使用Boost.Move模块吗?即使我使用的是 C++1x 而不是 C++0x?

我应该自己使用从 T& 到 T&& 的直接转换来实现移动语义吗?

4

1 回答 1

1

我刚刚找到了导致 STD 大量使用闪存的原因。

就我而言,它包含了<iostream>标头(用于std::cout),没有它,即使使用标准容器,闪存的使用也足够合理。

所以我想它解决了我的问题,我现在可以使用 C++ STD 来达到我的目的。

(无论如何,<iostream>在嵌入式环境中使用是个坏主意,仅用于打印printf

于 2020-01-11T01:58:01.110 回答