我期待在C/C++中做到这一点。如何用可变长度参数包装函数?
我遇到了Variable Length Arguments,但这表明Python & C使用libffi解决方案。
现在,如果我想换printf
功能与myprintf
我要做的就是象下面这样:
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;
}
但结果并不如预期!
This is a number: 1244780 and
this is a character: h and
another number: 29953463
任何一点我错过了什么?
对于这个问题的答案是现在_very_不同的是C++ 11超出。 – 2013-03-04 22:01:52
@MooingDuck的确,我添加了一个`Variadic templates`答案,你认为在C++ 11中有更好的方法吗? – 2013-07-24 14:47:44
@MooingDuck可变参数函数不是可变参数模板函数。它们的性质和类型是不同的。 – rubenvb 2013-07-24 15:05:09