va_start
来自cppreference.com
定义于头文件 <stdarg.h>
|
||
void va_start( va_list ap, parmN ); |
||
va_start
宏使函数能访问parmN
后的可变参数。
应该在任何对 va_arg 的调用前,以合法的 va_list 对象 ap
调用 va_start
。
若 parmN
声明带有 register
存储类指定符、数组类型、函数类型,或与默认参数提升结果类型不兼容的类型,则行为未定义。
参数
ap | - | va_list 类型实例 |
parmN | - | 首个可变参数前的参数名 |
展开值
(无)
示例
运行此代码
#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):
- 7.16.1.4 The va_start macro (p: 271-272)