va_start
va_start
在头文件 | | |
---|---|---|
void va_start(va_list ap,parmN); | | |
va_start宏允许访问命名参数parmN后面的变量参数。
在调用va_arg之前,应该使用实例将va_start调用到有效的va_list对象ap。
如果使用寄存器存储类说明符,数组类型,函数类型或与默认参数促销产生的类型不兼容的类型声明parmN,则行为是未定义的。
参数
ap | - | 一个va_list类型的实例 |
---|---|---|
Prmhn | - | 第一个变量参数前的命名参数 |
扩大价值
(none).
例
#include <stdio.h>
#include <stdarg.h>
int add_nums(int count, ...)
{
int result = 0;
va_list args;
va_start(args, count
for (int i = 0; i < count; ++i) {
result += va_arg(args, int
}
va_end(args
return result;
}
int main(void)
{
printf("%d\n", add_nums(4, 25, 25, 50, 50)
}
可能的输出:
150
参考
- C11标准(ISO / IEC 9899:2011):
扩展内容
va_arg | 访问下一个可变参数函数参数(函数宏) |
---|---|
va_copy(C99) | 制作可变参数函数参数(函数宏)的副本 |
va_end | 结束可变参数函数参数的遍历(函数宏) |
va_list | 保存va_start,va_arg,va_end和va_copy(typedef)所需的信息 |
| 用于va_start的C ++文档 |