gpt4 book ai didi

C++ 宏算术

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:58:14 26 4
gpt4 key购买 nike

我必须处理宏(它是宏调用宏;所以模板是不可能的)。

这是我想要的:

foo(3, a, b1, c1) --> foo1(a, b1, c1);
foo(5, a, b1, c1, b2, c2) -> foo2(a, b1, c1, b2, c2);
foo(7, a, b1, c1, b2, c2, b3, c3) -> foo3(a, b1, c1, b2, c2, b3, c3);

所以基本上,我想要的是能够在宏展开时执行“函数”n -> (n-1)/2。这可能吗?

[PS,如果你不喜欢我的问题;我支持你投反对票的权利;到目前为止我最糟糕的问题只有-17,所以也许我们可以打破这个记录;但是,请告诉我为什么我的问题在技术上是无效的。]

编辑:

Foo 接受一个可变参数,形式为:

foo(N, a1, b1, a2, b2, ... a_N, b_N) -> foo##N(a1, b1, a2, b2, ... a_N, b_N);

编辑:

致所有闭门的人。这是一个非常不同的问题。前者是关于“我如何计算宏中参数的数量”。 (在邮件列表中对此有很好的回应)。

这个问题是关于:如果我已经计算了参数的数量,我该如何调度它?

最佳答案

我还没有测试过这个,但应该可以工作:

#define SUBSTFOO3( a, b1, c1 ) foo1(a, b1, c1)
#define SUBSTFOO5( a, b1, c1, b2, c2 ) foo2(a, b1, c1, b2, c2)
/* ad nauseam */

#define foo( N, ... ) SUBSTFOO ## N ( __VA_ARGS__ )

这也可能有效:

#define SUBSTFOO3 foo1 /* no arguments needed */
#define SUBSTFOO5 foo2 /* "( __VA_ARGS__)" already the correct substitution */

#define foo( N, ... ) SUBSTFOO ## N ( __VA_ARGS__ )

关于C++ 宏算术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2473538/

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