2016-09-23 4 views
-2

現在、私はArduinoにC++コードを書いています。例では、私が表現C++のF(文字列)の意味は何ですか?

Serial.print(F("Disconnected from central:")); 

を見つけることが、この文はシリアルに文字列を送信するために使用されていることは明らかだが、それは代わりに直接文字列を使用してのF(文字列)を使用していますなぜですか?

私はGoogleにそれを試みますが、結果はありません。もし誰かがそれを知っていれば、私は非常に感謝します。

+3

単一のパラメータを持つ 'F'または' F'マクロがあります。 – dasblinkenlight

+4

https://www.baldengineer.com/arduino-f-macro.html – interjay

答えて

2

このマクロはArduino固有であり、 "C++"ではありません。

RAMを節約するために、フラッシュメモリに文字列を配置します。

これは、プログラムの実行時に文字列を変更できないことを意味します。

一つの現在の定義は次のとおりです。

#define F(slit) (reinterpret_cast<const __FlashStringHelper *>(PSTR(slit))) 

See the source code for more

+0

これはちょっとした話題ですが、デフォルトでは文字列リテラルをフラッシュメモリに入れていないのはなぜですか?デフォルトでRAMに入れることに利点がありますか? –

+0

@IanAbbott私は[このページ](https://www.iar.com/support/tech-notes/compiler/strings-with-iccavr-2.x/)で議論していますが、 AVRプラットフォーム上の文字列。 – unwind

+0

だから私は見る!ありがとうございました。 –

0

F()は、IDE1.0リリースで追加された最も強力な機能の1つです。私は、用語macrofunctionを混ぜ合わせています。 F()は本当にそれはそれはflash memoryはなくRAMstringsを格納するために使用するマクロ、あるWString.h

#define F(string_literal) (reinterpret_cast<const __FlashStringHelper *>(PSTR(string_literal))) 

に住んでいる#define macroあり、functionではありません。

関連する問題