c - 将数组分配给函数宏

标签 c arrays function macros

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

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

谁能解释一下#define(宏定义)行中做了什么?

最佳答案

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

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

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

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

相关文章:

c - 使用 rand() 函数生成随机 RGB 颜色

arrays - 当已发布数组中的对象更新而不是数组本身时,SwiftUI 如何更新 View

c - scanf 和 printf 仅使用整数指针在数组中显示 10 个数字//不能使用整数而不是 A[]。 +1 更多

perl - 在 Perl 中,如何检查给定函数是从哪个模块导入的?

javascript - 如何在页面加载时调用 Javascript 函数

javascript - 为什么 JavaScript getTime() 不是一个函数?

c - 如果字符串已经有一个,避免添加另一个 '\0'?

c++ - 如何使用管道发送动态分配的字符串

c++ - 使用 CFITSIO 库从 FITS 表中读取可变长度数组

Javascript |随机化数组后如何保存顺序