gpt4 book ai didi

c++ - 返回传递给它的参数数量的可变参数函数

转载 作者:行者123 更新时间:2023-11-30 00:44:07 26 4
gpt4 key购买 nike

我试图实现一个返回传递给它的参数数量的函数。这是代码:

int SIZE(int n, ...){

va_list ARGS;
va_start (ARGS, n);
int length(0);

void* current_arg;
do{
current_arg=va_arg(ARGS, void*);
length++;
}while( current_arg != nullptr);

va_end(ARGS);
return length;

}

我之前做过一些研究,所以我知道它不会起作用。事实上它没有:当我向它传递两个参数时,它返回了 12 !我仍然想了解为什么它不起作用。我看到两个选项:

  • 我设计算法的方式有问题,导致它出现故障。

  • 函数接受的参数比显式提供给它的参数多得多。

我编程的时间不长,所以我喜欢尝试这类东西。你能帮我弄清楚我的功能有什么问题吗?谢谢

最佳答案

既然你标记了 C++11,你应该考虑 parameter packs制作你的功能:

template<typename... T>
constexpr unsigned numberOfArguments(const T&... args)
{
return sizeof...(T);
}

正如在主帖的评论中所见,sizeof...() 运算符在这种情况下将返回模板参数包的大小。

关于c++ - 返回传递给它的参数数量的可变参数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50179166/

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