2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Arduino > F() macro > Serial.println(F("Initializing I2C devices...")); > RAMの消費を減らす

Last updated at Posted at 2016-07-01

MPU-9250を使用するためのスケッチ MPU6050_DMP6の中に以下のようなコードがある。

    Serial.println(F("Initializing I2C devices..."));

このF()マクロは何かというと以下を見つけた。

What the F() macro Does
The F() macro tells the compiler to leave this particular array in PROGMEM. Then when it is time to access it, one byte of the data is copied to RAM at a time.

以下は僕なりの理解 (間違っているかもしれない)。

Serial.println("Initializing I2C devices...");

とした場合は、コンパイル時点で文字列がRAMに格納される。RAMが浪費される。

Serial.println(F("Initializing I2C devices..."));

とした場合は、コンパイル時点で文字列はRAMには格納されずPROGMEMにある。実際に文字列を使う時点でRAMにコピーされて使われる。

結果として、リソース制限のあるRAMを無駄に使用しなくなるということのようだ。

F()マクロは文字列(文字列リテラルというのであっている?)にのみ使えるようだ。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?