· ☕ 1 min read
#Computer #C #** va_〇〇 1 2 3 4 ++void va_start(va_list ap, last); type va_arg(va_list ap, type); void va_end(va_list ap); void va_copy(va_list dest, va_list src); va_list は ただのchar * 1 typedef char* va_list 1 printf( "%d %f %s\n", 123, 4.56, "test"); → va_list = int(4bytes) | float(8bytes) | char*(4bytes) → va_startはポインタをva_listの先頭に設定. → va_argはtypeで指定された型分ポインタをずらしていくだけ #** usage 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 ++#include <stdio.h> #include <stdarg.h> void foo(char *fmt, ...) { ...