繁体   English   中英

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

[英]Variadic function that returns the number of arguments that are passed to it

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

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,因此应考虑使函数起作用的参数包

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

如主帖子中的注释所示,在这种情况下, sizeof...()运算符将返回模板参数包的大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM