C++中的F(string)是什么意思?

Xia*_*eng 1 c++ arduino

目前我正在 Arduino 上编写 C++ 代码。在一个例子中,我找到了一个表达式

Serial.print(F("Disconnected from central:"));
Run Code Online (Sandbox Code Playgroud)

很明显,这个语句是用来向串口发送字符串的,但是为什么它使用F(string)而不是直接使用字符串呢?

我尝试用谷歌搜索但没有结果。如果有人知道,我将不胜感激。

unw*_*ind 5

这个宏是特定于 Arduino 的,它不是“C++”。

它将字符串放在闪存中,以节省 RAM。

这意味着程序运行时不能修改字符串。

目前的一种定义是:

#define F(slit) (reinterpret_cast<const __FlashStringHelper *>(PSTR(slit)))
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅源代码