0

私は最近、マクロが以下のように定義されている以下のコードに出くわしました

unsigned char cbuf[10];
#define pbuf() (&cbuf[0])

#define(マクロ定義)行で何が行われているのか、誰か説明してもらえますか?

4

1 に答える 1

1

コードに が含まれている場合pbuf()、プリプロセッサ (実際にコンパイルする前に実行される) はそれを に置き換え(&cbuf[0])、基本的に実際のコンパイラに供給されるソース コードを変更します。

したがって、マクロの意図は、cbuf 変数の最初の要素のアドレスを指定することです (その変数が現在のスコープ内にあるものは何でも、プリプロセッサはコンテキストをまったく考えずに「文字列置換」を実行するだけなので)。配列の名前は最初の要素のアドレスでもあるため、少し冗長です...

言い換えれば、 を使用するところはどこでも、直接pbuf()書くだけです。cbuf

于 2012-11-02T07:41:56.507 に答える