簡體   English   中英

使用帶有移動語義的 C++11 - 沒有標准庫(和 Boost.smart_ptr)

[英]Using C++11 with move semantics - without the standard library (and with Boost.smart_ptr)

我正在從事嵌入式項目,使用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&& 的直接轉換自己實現移動語義嗎?

我剛剛找到了導致 STD 大量使用閃存的原因。

就我而言,它包含了<iostream>標頭(用於std::cout ),沒有它,即使使用 std 容器,閃存使用也足夠合理。

所以我想它解決了我的問題,我現在可以將 C++ STD 用於我的目的。

(無論如何,在嵌入式環境中使用<iostream>是一個壞主意,打印只需使用printf

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM