組込みC > enumと#defineの違い
MSP430
#define IDX_CMD (1)
#define IDX_UTC_TIME (2)
#define IDX_STS (3)
#define IDX_LAT (4)
#define IDX_NS (5) // North or South
#define IDX_LON (6)
#define IDX_EW (7) // East or West
#define IDX_VELOCITY (8)
#define IDX_DIRECITON (9) // or orientation
#define IDX_UTC_DATE (10)
enum {
IDX_CMD = 1,
IDX_UTC_TIME,
IDX_STS,
IDX_LAT,
IDX_NS, // North or South
IDX_LON,
IDX_EW, // East or West
IDX_VELOCITY,
IDX_DIRECITON, // or orientation
IDX_UTC_DATE,
// etc
};
どちらがメモリ使用効率が良いか?という疑問を持った。
MSP430の開発環境でのメモリ使用結果は、ともに以下だった。
GPSの値をUARTで読み取って、AQM1602(I2C接続のキャラクタLCD)に表示する実装。
5 434 CODE
239 DATA (+19 absolute)
25 CONST
自分の理解では、#define
の場合はプリプロセッサでコードの該当箇所が数値に置き変わる。そのため、余分なメモリ消費がない。
一方で、enumの処理はどうなのかは不明。
上記のメモリ消費だけを見れば、enumの場合もプリプロセッサで置換が起きているとも考えられるが、未消化。
WIP (Work In Progress)。
以下は上記の疑問の回答にはなっていない。
http://stackoverflow.com/questions/10006700/does-defining-enum-type-has-a-heavy-memory-imprint
http://stackoverflow.com/questions/136946/difference-between-enum-and-define-statements
Author And Source
この問題について(組込みC > enumと#defineの違い), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/68b19ec7a3991f5ec245著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .