【发布时间】:2009-05-13 20:35:59
【问题描述】:
我想让 C 预处理器为我生成宏(即,我只使用 C99)。我会写一个宏
#define make_macro(in) <...magic here...>
当我放的时候
make_macro(name1)
make_macro(name2)
在后面的代码中,它会扩展为
#define name1(...) name1_fn(name1_info, __VA_ARGS__)
#define name2(...) name2_fn(name2_info, __VA_ARGS__)
然后我就可以使用 name1 和 name2 作为(宏实现的)函数。我认为我在这两个步骤中都无法使用宏:使用宏重复重新填充模板是有意义的,并且可变参数处理除了通过宏之外将不起作用。
那么,<...magic here...> 占位符中的内容是什么?在这一点上,我开始相信这在 C99 中是不可能的,但也许我遗漏了一些语法细节。
【问题讨论】:
-
为什么是宏?我没有得到这个“反复重新填充模板”的观点。什么模板,什么补充?
标签: c macros c-preprocessor variadic-functions