将数组分配给函数宏

时间:2012-11-02 07:39:17

标签: c arrays function macros

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

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

有人可以解释一下#define(宏定义)行中的内容吗?

1 个答案:

答案 0 :(得分:1)

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

因此,宏的意图是给出cbuf变量的第一个元素的地址(该变量在当前范围内,因为预处理器实际上只是“字符串替换”而不知道上下文)。它有点多余,因为数组的名称也是它的第一个元素的地址......

换句话说,只要你使用pbuf(),就直接写cbuf