如何使用va_start()?

How to use va_start()?

在具有可变参数的函数中,我们使用函数 va_start() 初始化类型 va_list ,'ap' 的对象为:

void va_start(va_list ap, parmN);

没看懂

1.what 类型的对象可以作为 parMN(最后一个已知参数)传递。我已经完成了传递整数、带有格式说明符的字符串、结构等的示例。

2. parMN如何描述以下可选参数。

C 标准说 va_start() 实际上是一个宏,而不是函数,所以它可以做函数做不到的事情。细节高度依赖于实现,但您可以想象它需要 parmN 的地址来确定下一个参数的堆栈地址。 va_start() 不需要知道以下参数的类型,因为该信息已传递给 va_arg(),这是另一个宏。