Visual C++ 有类似的东西__builtin_va_arg_pack
吗?
此内置函数表示内联函数的所有匿名参数。它只能用于始终内联的内联函数,从不编译为单独的函数,例如使用 属性(( always_inline )) 或属性(( gnu_inline )) 外部内联函数的函数。它只能作为最后一个参数传递给带有可变参数的其他函数。当不希望使用预处理器宏时,这对于为可变参数函数编写小型包装内联很有用。例如:
extern int myprintf (FILE *f, const char *format, ...); extern inline __attribute__ ((__gnu_inline__)) int myprintf (FILE *f, const char *format, ...) { int r = fprintf (f, "myprintf: "); if (r < 0) return r; int s = fprintf (f, format, __builtin_va_arg_pack ()); if (s < 0) return s; return r + s; }