【发布时间】:2018-12-31 16:56:35
【问题描述】:
我有一个包含 ctype.h 的平面 C 文件,我无法弄清楚宏是如何工作的。有这个宏
#define da_dim(name, type) type *name = NULL; \
int _qy_ ## name ## _p = 0; \
int _qy_ ## name ## _max = 0
我认为它应该定义给定值的类型。所以例如我可以写
int a;
da_dim(a,"char");
将其转换为字符,但它不这样做。我可以想象 '## name ##' 是/做什么(就像一个占位符),但我不明白 'qy' 是什么以及它来自哪里。那么这个宏是做什么用的,你如何使用它以及(也许)它是如何工作的?
【问题讨论】:
-
我建议你通过预处理器运行代码,看看预处理器用什么替换了宏调用(或者尝试自己在纸上进行替换)。
-
宏是干什么用的,你问过作者吗?或者阅读您在其中看到宏的代码的文档?
-
最后,您对宏的示例使用是错误的,会导致构建错误。如果您扩展宏(在纸上或使用预处理器),您会明白原因。
-
我知道错了,所以才问这个问题。