这是va_start
宏的实现:
#define va_start(list, param) (list = (((va_list)¶m) + sizeof(param)))
如您所见,该va_start
宏通过假定它直接存在于count
参数之后而返回了参数变量列表中的第一个字节的地址(我的意思是该count
参数是我声明要传递给该参数的参数的名称)。参数数量)。
因此,如果我除了count
参数之外还使用其他参数,是否应该count
在省略号(...)之前直接声明参数?
va_start()
应该始终使用最后一个命名参数进行调用,例如
void function(int x, int y, int z, ...)
{
va_list ap;
va_start(ap, z);
.
.
.
va_end(ap);
}
因此,如果我除了count参数之外还使用其他参数,是否应该在省略号(...)之前直接声明count参数?
是的,如果您想使用va_start()
这种方式
va_list ap;
va_start(ap, count);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句