【发布时间】:2023-07-18 04:02:01
【问题描述】:
是否可以定义扩展为“x[0], x[1], x[2], ..., x[i]”的 C/C++ 宏“BUILD(a, i)”?喜欢在
#define BUILD(x, 0) x[0]
#define BUILD(x, 1) x[0], x[1]
#define BUILD(x, 2) x[0], x[1], x[2]
...
似乎 BOOST_PP_ENUM_PARAMS 可以完成这项工作。我想我可以只#include boost,但我很想知道它是如何以及为什么起作用的,任何人都可以解释一下吗?
我想调用一个函数 f(int, ...),它接受 N 个 int 参数 x[i], 0 ceil(sizeof(A) / sizeof(B))。所以很遗憾,我不能使用可变参数或模板。
【问题讨论】:
-
您真正想解决什么问题? IE。这个宏的结果将用于什么?是否可以稍微更改用法以允许使用模板解决方案(可以递归)?
-
那么为什么不直接传递数组呢?还是向量更好?
标签: c++ c-preprocessor