什么';s C+中F(string)的含义+;? 我现在正在写关于ARDUINO的C++代码。在一个例子中,我找到了一个表达式 Serial.print(F("Disconnected from central:"));

什么';s C+中F(string)的含义+;? 我现在正在写关于ARDUINO的C++代码。在一个例子中,我找到了一个表达式 Serial.print(F("Disconnected from central:"));,c++,arduino,C++,Arduino,很明显,此语句用于将字符串发送到序列,但为什么它使用F(字符串)而不是直接使用字符串 我试着用谷歌搜索,但没有结果。如果有人知道,我将不胜感激。这个宏是Arduino特有的,它不是“C++” 它将字符串放在闪存中,以节省RAM 这意味着程序运行时无法修改字符串 目前的一个定义是: #define F(slit) (reinterpret_cast<const __FlashStringHelper *>(PSTR(slit))) #定义F(狭缝)(重新解释铸造(PSTR(狭缝)))

很明显,此语句用于将字符串发送到序列,但为什么它使用F(字符串)而不是直接使用字符串


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

这个宏是Arduino特有的,它不是“C++”

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

这意味着程序运行时无法修改字符串

目前的一个定义是:

#define F(slit) (reinterpret_cast<const __FlashStringHelper *>(PSTR(slit)))
#定义F(狭缝)(重新解释铸造(PSTR(狭缝)))

.

此宏是特定于Arduino的,它本身不是“C++”

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

这意味着程序运行时无法修改字符串

目前的一个定义是:

#define F(slit) (reinterpret_cast<const __FlashStringHelper *>(PSTR(slit)))
#定义F(狭缝)(重新解释铸造(PSTR(狭缝)))
.

F()
是最强大的功能之一,它是在
IDE的
1.0
版本中添加的。我一直在混合使用术语
函数
F()
实际上不是一个
函数
,而是一个
#define宏
,它位于
WString.h

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
#定义F(字符串文字)(重新解释转换(PSTR(字符串文字)))
它是一个宏,用于将
字符串
存储在
闪存
中,而不是
RAM

F()
是最强大的功能之一,它是在
IDE
1.0
版本中添加的。我一直在混合使用术语
函数
F()
实际上不是一个
函数
,而是一个
#define宏
,它位于
WString.h

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal)))
#定义F(字符串文字)(重新解释转换(PSTR(字符串文字)))

它是一个宏,用于将
字符串
存储在
闪存
中,而不是
RAM

有一个名为
F
的函数,或者一个名为
F
的宏,只有一个参数。这有点离题,但我不禁想知道为什么他们不在默认情况下将字符串文本放入闪存中。默认情况下将它们放在RAM中有什么好处吗?@IanAbbott I beleive有一些讨论,在AVR平台上有指向字符串的指针是有问题的。我明白了!谢谢。这有点离题了,但我忍不住想知道为什么默认情况下他们不把字符串文本放在闪存中。默认情况下将它们放在RAM中有什么好处吗?@IanAbbott I beleive有一些讨论,在AVR平台上有指向字符串的指针是有问题的。我明白了!谢谢你。