NAME
stdarg.h - handle variable argument listSYNOPSIS
#includevoid 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 对不定参数调用处理的函数”