|
> printfのような可変引数関数のカバー関数を作りたいのですが。
> 問題としては、vfprintf等で表示するとかいうことではなく、
> 受け取った可変引数をそのまま渡したいというところです。
かなりインチキなやり方で、制限もありますが、少なくとも Windows 2000 上で、
gcc, LSI C-86, Borland C++, Visual C++ で動きました。
#include <stdio.h>
#include <stdarg.h>
int my_printf(const char *fmt, ...)
{
va_list ap; int i, a[8];
va_start(ap, fmt);
for (i = 0; i < 8; i++)
a[i] = va_arg(ap, int);
i = printf(fmt, a[0], a[1], a[2], a[3], a[4], a[5], a[6], a[7], a[8]);
va_end(ap);
return i;
}
int main()
{
my_printf("%d %f %c\n", 123, 3.14, 'A');
return 0;
}
カバーというよりラッパーと呼ぶほうが私は好きです。
|