私は最近、マクロが以下のように定義されている以下のコードに出くわしました
unsigned char cbuf[10];
#define pbuf() (&cbuf[0])
#define
(マクロ定義)行で何が行われているのか、誰か説明してもらえますか?
コードに が含まれている場合pbuf()
、プリプロセッサ (実際にコンパイルする前に実行される) はそれを に置き換え(&cbuf[0])
、基本的に実際のコンパイラに供給されるソース コードを変更します。
したがって、マクロの意図は、cbuf 変数の最初の要素のアドレスを指定することです (その変数が現在のスコープ内にあるものは何でも、プリプロセッサはコンテキストをまったく考えずに「文字列置換」を実行するだけなので)。配列の名前は最初の要素のアドレスでもあるため、少し冗長です...
言い換えれば、 を使用するところはどこでも、直接pbuf()
書くだけです。cbuf