Estoy buscando hacer esto en C/C++.Cómo envolver una función con argumentos de longitud variable?
Me encontré con Variable Length Arguments pero esto sugiere una solución con Python & C usando libffi.
Ahora, si quiero envolver printf
función con myprintf
Lo que hago es, como a continuación:
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;
}
Pero los resultados no son los esperados!
This is a number: 1244780 and
this is a character: h and
another number: 29953463
¿En qué punto perdí?
La respuesta a esta pregunta es _very_ diferente ahora que C++ 11 está fuera. –
@MooingDuck De hecho, agregué una respuesta de 'Plantillas variables', ¿cree que hay una manera más agradable en C++ 11? –
@MooingDuck Una función vararg no es una función de plantilla variadic. Son diferentes en naturaleza y tipo. – rubenvb