[英]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.