stdarg.h 对不定参数调用处理的函数

NAME
stdarg.h - handle variable argument list

SYNOPSIS
#include

void va_start(va_list ap, argN);
void va_copy(va_list dest, va_list src);
type va_arg(va_list ap, type);
void va_end(va_list ap);

在看代码时看到下面部分时,起初以为是作者写的,后man才晓得

/* asprintf.c */

14 int
15 asprintf(char **strp, const char *fmt, …)
16 {
17 va_list ap;
18 int ret;
19  
20 va_start(ap, fmt);
21 ret = vasprintf(strp, fmt, ap);
22 va_end(ap);
23 return (ret);
24 }

/* asprintf.h */

9 int asprintf(char **strp, const char *fmt, …);

/* vasprintf.h */
9 int vasprintf(char **strp, const char *fmt, va_list ap);

/* vasprintf.c */

14 int
15 vasprintf(char **strp, const char *fmt, va_list ap)
16 {
17 va_list aq;
18 int ret;
19  
20 va_copy(aq, ap);
21 ret = vsnprintf(NULL, 0, fmt, aq);
22 va_end(aq);
23 if ((*strp = malloc(ret + 1)) == NULL)
24 return (-1);
25 ret = vsnprintf(*strp, ret + 1, fmt, ap);
26 return (ret);
27 }

0 Responses to “stdarg.h 对不定参数调用处理的函数”


  1. No Comments

Leave a Reply