我最近遇到了下面的代码,其中的宏定义如下

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


谁能解释#define(宏定义)行中正在做什么?

最佳答案

当任何代码包含pbuf()时,预处理器(在实际编译之前运行)都将其替换为(&cbuf[0]),基本上改变了馈给实际编译器的源代码。

因此,该宏的目的是给出cbuf变量的第一个元素的地址(该变量在当前范围内是什么,因为预处理器实际上只是在不了解上下文的情况下进行“字符串替换”)。这有点多余,因为数组的名称也是它的第一个元素的地址...

换句话说,无论在哪里使用pbuf(),都只需直接编写cbuf

关于c - 将数组分配给函数宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13191181/

10-09 05:06