嵌入式C:如何将MAP宏一次应用于两个参数而不是一个?
我想以一种巧妙的方式修改或使用此宏,以便在我的C源代码中使用map,如下所示:嵌入式C:如何将MAP宏一次应用于两个参数而不是一个?,c,dictionary,macros,embedded,variadic,C,Dictionary,Macros,Embedded,Variadic,我想以一种巧妙的方式修改或使用此宏,以便在我的C源代码中使用map,如下所示: MAP(f,1,2,3) f(1) f(2) f(3) 进入 我该怎么做?只需使用宏作为函数名调用MAP(),宏展开将插入参数: #define F(x) f(a,x) 然后在您的函数中: MAP(F, 1, 2, 3); 结果是: f(a, 1); f(a, 2); f(a, 3); (不支持该方法,只提供问题的答案。)只需使用函数名宏调用MAP(),其中宏展开插入参数: #define
MAP(f,1,2,3)
f(1)
f(2)
f(3)
进入
我该怎么做?只需使用宏作为函数名调用MAP()
,宏展开将插入参数:
#define F(x) f(a,x)
然后在您的函数中:
MAP(F, 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自动生成代码,COdeG生成器: 通过将python代码封装在注释中,我能够自行生成我想要的所有内容,无论它有多复杂
比依赖预处理器更容易、更灵活、更友好。最后,很明显,使用C预处理器是不好的,在现实世界中应该尽量避免 我决定使用python和COG自动生成代码,COdeG生成器: 通过将python代码封装在注释中,我能够自行生成我想要的所有内容,无论它有多复杂
与依赖预处理器相比,更容易、更灵活、更友好。请不要使用该宏,使用宏进行元编程是可怕的编程实践。在循环中使用函数指针。说真的。嗨,伦丁,谢谢你的来信。我想用带有可变参数列表的X宏“生成”一些代码。我使用它们不仅仅是为了“循环”:)请不要使用那个宏,用宏进行元编程是可怕的编程实践。在循环中使用函数指针。说真的。嗨,伦丁,谢谢你的来信。我想用带有可变参数列表的X宏“生成”一些代码。我使用它们不仅仅是为了“循环”:)不幸的是,我不能使用此解决方案,因为a应该是另一个宏参数,并且事先不知道。不幸的是,我不能使用此解决方案,因为a应该是另一个宏参数,并且事先不知道。