Visual C ++には似たようなものがあり__builtin_va_arg_pack
ますか?
この組み込み関数は、インライン関数のすべての匿名引数を表します。これは、常にインライン化されるインライン関数でのみ使用でき、 属性((always_inline))または属性((gnu_inline))externインライン関数を使用する関数などの個別の関数としてコンパイルされることはありません。可変引数を持つ他の関数に最後の引数としてのみ渡す必要があります。これは、プリプロセッサマクロの使用が望ましくない場合に、可変引数関数の小さなラッパーインラインを作成する場合に役立ちます。例えば:
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; }