¿Cómo puede una función de args variable llamar a otra?

Digamos que tienes 2 funciones:

void func(int x,int y,...) { //do stuff } void func2(int x,...) { func(x,123,...); } 

¿Cómo puede hacer que esto funcione, por ejemplo, pasar la lista arg a la otra función?

EDIT: esto es un duplicado , ¿alguien puede fusionarlos o lo que sea?

Necesita una versión separada que funcione con listas de argumentos explícitos:

 void vfunc(int x, va_list args) { /* do stuff */ } void func2(int x, ...) { va_list arg; va_start(arg, x); vfunc(x, arg); va_end(arg); } 

Esta es la razón por la que hay funciones estándar como vprintf() .

Para ser añadido a la respuesta “desenrollar”:

La página del manual de va_start (3) tiene una explicación decente sobre cómo trabajar con los objetos de va_list, incluido un buen ejemplo.

Además, la página printf (3) contiene un ejemplo aún mejor de la infraestructura de llamadas basada en va_list alrededor de vsnprintf (3) (puede acceder a esta página utilizando el nombre de las variantes printf ()).