私はC/C++でこれを行うことを検討しています。可変長引数を使用して関数をラップする方法は?
私はVariable Length Argumentsに出くわしたが、これはlibffiを使ってPython & Cとのソリューションを提案しています。
void myprintf(char* fmt, ...)
{
va_list args;
va_start(args,fmt);
printf(fmt,args);
va_end(args);
}
int _tmain(int argc, _TCHAR* argv[])
{
int a = 9;
int b = 10;
char v = 'C';
myprintf("This is a number: %d and \nthis is a character: %c and \n another number: %d\n",a, v, b);
return 0;
}
しかし、期待通りの結果がありません:私は何myprintf
でprintf
機能をラップする場合
は今、以下のようなものです!
This is a number: 1244780 and
this is a character: h and
another number: 29953463
どこか迷ったのですか?
この質問に対する答えは、C++ 11が出ている今_very_異なっています。 –
@MooingDuck確かに、私は 'Variadic templates'答えを追加しました。あなたはC++ 11でより良い方法があると思いますか? –
@MooingDuck vararg関数は可変的なテンプレート関数ではありません。彼らは性質とタイプが異なります。 – rubenvb