如何使用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()
,这是另一个宏。
在具有可变参数的函数中,我们使用函数 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()
,这是另一个宏。