我想让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 中是不可能的,但也许我遗漏了一些语法细节。