gpt4 book ai didi

c++ - 为什么这个可变参数计数宏在 VC++ 中失败?

转载 作者:IT老高 更新时间:2023-10-28 22:14:19 24 4
gpt4 key购买 nike

我得到了以下实现来获取可变参数宏中的参数数量(目前限制为 16 个参数)。但是,对于 VS2010,无论传递多少参数,输出始终为 1With GCC ,输出是正确的,让我得出结论,我一定错过了 MSVC (10) 的特定内容。

#define PP_NARGS(...) \
_xPP_NARGS_IMPL(__VA_ARGS__,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0)

#define _xPP_NARGS_IMPL(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,N,...) N

int main(){
int i = PP_NARGS(A,V,C,X,Y,Z);

std::cout << i;

std::cin.get();
return 0;
}

所以,问题如标题所述,任何帮助将不胜感激。

最佳答案

以下解决方法有帮助吗?

#define EXPAND(x) x
#define PP_NARGS(...) \
EXPAND(_xPP_NARGS_IMPL(__VA_ARGS__,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0))

我认为你的宏并没有特别错,但是MSVC 的 __VA_ARGS__ 扩展的行为似乎与 C99 不同。

关于c++ - 为什么这个可变参数计数宏在 VC++ 中失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5530505/

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