gpt4 book ai didi

c++ - 用于将任意宏扩展一定次数的宏?

转载 作者:太空狗 更新时间:2023-10-29 20:10:45 25 4
gpt4 key购买 nike

我想编写 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com