我正在使用va_args在 C++ 中试验可变参数。这个想法很有用,而且确实是我在 C# 中通过 params 功能使用的很多东西。让我感到沮丧的一件事是上面关于 va_args 的以下摘录:
另请注意, va_arg 无法确定检索到的参数是否是传递给函数的最后一个参数(或者即使它是超出该列表末尾的元素)。
我很难相信没有办法以编程方式确定从该函数本身传递给该函数的变量参数的数量。我想执行以下操作:
void fcn(int arg1 ...)
{
va_list argList;
va_start(argList, arg1);
int numRemainingParams = //function that returns number of remaining parameters
for (int i=0; i<numRemainingParams; ++i)
{
//do stuff with params
}
va_end(argList);
}
重申一下,上面的文档表明 va_arg 不能确定检索到的 arg 是否是列表中的最后一个。但我觉得这些信息必须以某种方式访问。
有没有实现这一目标的标准方法?