Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我最近遇到了下面的代码,其中宏定义如下
unsigned char cbuf[10]; #define pbuf() (&cbuf[0])
谁能解释一下#define(宏观定义)行中正在做什么?
#define
当代码包含pbuf()时,预处理器(在实际编译之前运行)将其替换为(&cbuf[0]),基本上改变了提供给实际编译器的源代码。
pbuf()
(&cbuf[0])
因此,宏的目的是提供 cbuf 变量的第一个元素的地址(该变量在当前范围内,因为预处理器实际上只是在不知道上下文的情况下进行“字符串替换”)。这有点多余,因为数组的名称也是它的第一个元素的地址......
换句话说,无论你在哪里使用pbuf(),直接写cbuf。
cbuf