[英]Assigning an array to a function macro
我最近遇到了以下代碼,其中宏的定義如下
unsigned char cbuf[10];
#define pbuf() (&cbuf[0])
誰能解釋在#define
(宏定義)行中正在做什么?
當代碼中包含pbuf()
,預處理器(將在實際編譯之前運行)將其替換為(&cbuf[0])
,基本上更改了饋給實際編譯器的源代碼。
因此,宏的目的是給出cbuf變量的第一個元素的地址(該變量在當前范圍內是什么,因為預處理器實際上只是在不了解上下文的情況下進行“字符串替換”)。 這有點多余,因為數組的名稱也是它的第一個元素的地址...
換句話說,無論在哪里使用pbuf()
,都只需直接編寫cbuf
即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.