count 参数是否应该直接在可变参数函数中的省略号 (...) 之前声明?

Should the count parameter be declared directly before the ellipsis (...) in a variadic function?

这是 va_start 宏的实现:

#define va_start(list, param) (list = (((va_list)&param) + sizeof(param)))

如您所见,va_start 宏返回可变参数列表中第一个字节的地址,假设它直接存在于 count 参数之后(我的意思是count parameter 我声明的参数的名称,我将传递给参数的数量)。

所以如果我使用除了 count 参数之外的其他参数,count 参数是否应该直接在省略号 (...) 之前声明?

va_start() 应始终使用 最后命名参数 调用,例如

void function(int x, int y, int z, ...)
{
    va_list ap;

    va_start(ap, z);
    .
    .
    .
    va_end(ap);
}

So if I am using in addition to the count parameter other parameters, Should the count parameter be declared directly before the ellipsis (...)?

是的,如果你想这样使用va_start()

va_list ap;
va_start(ap, count);