我想以一种棘手的方式修改或使用这个https://github.com/swansontec/map-macro宏来在我的C源中使用map,如下所示:
MAP(f,1,2,3)
f(1)
f(2)
f(3)
成
MAP2(f,a,1,2,3)
f(a,1)
f(a,2)
f(a,3)
我该怎么办?
只需使用函数名称宏调用MAP()
,宏扩展将插入您的参数:
#define F(x) f(a,x)
然后在你的功能:
MAP(F, 1, 2, 3);
结果是:
f(a, 1); f(a, 2); f(a, 3);
(不支持这种方法,只是提供问题的答案。)
最后,很明显使用C预处理器很糟糕,应该尽可能地避免在现实世界中使用。
我决定使用python和COG自动生成代码,COde Generator:https://nedbatchelder.com/code/cog/index.html#h_the_cog_module
通过将python代码包装在注释中,我能够自我生成我想要的所有内容,无论它有多复杂。
比依赖预处理器更容易,更灵活,更友好2017。