va_arg宏
概要:
#include <stdarg.h> type va_arg(va_list ap, type);
描述:
va_arg应作为宏而不是函数来实现;宏va_arg是函数式宏,将扩展为一个表达式,该表达式具有函数调用中下一个实际参数的值和参数type指定的类型。
参数ap应已使用宏va_start或者va_copy初始化,并且没有调用宏va_end结束使用ap。每次调用宏va_arg都会修改参数ap,以便依次返回连续参数的值。参数type应是一个指定的类型名,type *可构成指向type类型对象的指针类型。
如果不存在实际的下一个参数,或者如果参数type与实际的下一个参数的类型不兼容(根据默认参数提升规则提升后),其行为是未定义的,下述两种情况除外:
- 一种类型是有符号整数类型,另一种类型是对应的无符号整数类型,并且值用这两种类型均能表示。
- 一种类型是void类型指针,另一种类型是字符类型指针。
参数:
va_list ap
va_list类型对象。
type
类型名。
返回值:
调用宏va_start后第一次调用宏va_arg,将返回参数parmN(参数parmN为函数定义可变参数列表中最右边参数,即, ...之前的参数。)之后的实际参数值;随后连续调用该宏,将依次返回剩余实际参数值。
范例:
|
|
输出:
The maximum value: 74
相关内容:
va_list | 保存可变参数信息的类型。 |
va_copy | 复制可变参数列表的宏。 |
va_end | 结束使用可变参数列表的宏。 |
va_start | 初始化可变参数列表的宏。 |