我想编写 C 宏,它接受整数文字或类似于整数文字的东西,以及另一个宏的名称,并将另一个宏扩展为整数文字值的次数,并使用索引作为论据,例如
MAGIC(4, FUN)
扩展为
FUN(0) FUN(1) FUN(2) FUN(3)
相反,如果我有 MORE_MAGIC,它采用范围开始和长度,那会更好:
例如
MORE_MAGIC(1, 3, FUN)
扩展为
FUN(1) FUN(2) FUN(3)
注意:
- 我可以接受扩展的数量被限制在 99 或 50 或类似的数量,我不知道。
- 您不能对 FUN 做出假设。需要是通用的。不,这不是为了手动展开 for 循环。
- 仅使用 C 的解决方案以及需要 C++ 的解决方案(例如,如果您以某种方式在解决方案中使用模板)是最受欢迎的。
- 解决方案的总行数(包括#include,但不包括注释)最好是适度的。比如说,不超过 200。
最佳答案
Boost Preprocessor 是一个内容丰富的库,专注于这种预处理器魔法。
它提供了一个名为 BOOST_PP_REPEAT_FROM_TO 的宏,这正是您想要的。
此处提供完整引用:
http://boost.org/libs/preprocessor
关于c++ - 用于将任意宏扩展一定次数的宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37380334/