我最近遇到了下面的代码,其中宏定义如下
unsigned char cbuf[10];
#define pbuf() (&cbuf[0])
谁能解释一下#define
(宏定义)行中做了什么?
最佳答案
当代码包含 pbuf()
时,预处理器(在实际编译之前运行)会将其替换为 (&cbuf[0])
,基本上改变了馈送的源代码到实际的编译器。
因此,宏的目的是给出 cbuf 变量的第一个元素的地址(无论该变量在当前范围内是什么,因为预处理器实际上只是执行“字符串替换”而不了解上下文)。这有点多余,因为数组的名称也是它的第一个元素的地址......
换句话说,无论您在哪里使用pbuf()
,都可以直接编写cbuf
。
关于c - 将数组分配给函数宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13191181/