C 语言库宏 - va_end()
C 语言标准库 <stdarg.h> 宏 void va_end(va_list ap) 允许使用了 va_start 宏的带有可变参数的函数返回。 如果在从函数返回之前没有调用 va_end ,则结果为未定义
头文件
#include <stdarg.h>
宏声明
下面是 va_end() 宏的声明
void va_end(va_list ap)
参数
- ap:这是之前由同一函数中的 va_start 初始化的 va_list 对象
返回值
无
范例
下面的范例演示了 va_end() 宏的用法
/** * file: main.c * author: 简单教程(www.twle.cn) * * Copyright © 2015-2065 www.twle.cn. All rights reserved. */ #include <stdarg.h> #include <stdio.h> int mul(int, ...); int main() { printf("15 + 12 + 32 = %d\n", mul(3,15, 12, 32) ); return 0; } int mul(int num_args, ...) { int val = 1; va_list ap; int tmp; int i; va_start(ap, num_args); for(i = 0; i < num_args; i++) { tmp = (int)va_arg(ap, int); printf("argument %d: %d\n",i,tmp); val += tmp; } va_end(ap); return val; }
编译运行范例,输出结果如下
$ gcc main.c && ./a.out argument 0: 15 argument 1: 12 argument 2: 32 15 + 12 + 32 = 60