嵌入式C:如何将MAP宏一次应用于两个参数而不是一个?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌入式C:如何将MAP宏一次应用于两个参数而不是一个?相关的知识,希望对你有一定的参考价值。
我想以一种棘手的方式修改或使用这个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。
以上是关于嵌入式C:如何将MAP宏一次应用于两个参数而不是一个?的主要内容,如果未能解决你的问题,请参考以下文章
是否有任何理由使用 C 而不是 C++ 进行嵌入式开发? [关闭]