C语言stdarg头文件(stdarg.h)中va_copy宏的用法及代码示例。
用法:
void va_copy (va_list dest, va_list src);
复制变量参数列表
要从中提取的下一个参数dest与将从中提取的内容相同src。
调用的函数va_copy,还应调用va_end在dest在它返回之前。
参数
返回值
空示例
/* va_copy example */
#include <stdio.h> /* printf, vprintf*/
#include <stdlib.h> /* malloc */
#include <string.h> /* strlen, strcat */
#include <stdarg.h> /* va_list, va_start, va_copy, va_arg, va_end */
/* print ints until a zero is found: */
void PrintInts (int first,...)
{
char * buffer;
const char * format = "[%d] ";
int count = 0;
int val = first;
va_list vl,vl_count;
va_start(vl,first);
/* count number of arguments: */
va_copy(vl_count,vl);
while (val != 0) {
val=va_arg(vl_count,int);
++count;
}
va_end(vl_count);
/* allocate storage for format string: */
buffer = (char*) malloc (strlen(format)*count+1);
buffer[0]='\0';
/* generate format string: */
for (;count>0;--count) {
strcat (buffer,format);
}
/* print integers: */
printf (format,first);
vprintf (buffer,vl);
va_end(vl);
}
int main ()
{
PrintInts (10,20,30,40,50,0);
return 0;
}
输出:
[10] [20] [30] [40] [50] [0] |
相关用法
注:本文由纯净天空筛选整理自C标准库大神的英文原创作品 C va_copy function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。