#include #include /* #define HAVE_VA_COPY*/ #ifdef HAVE_VA_COPY #define VA_COPY(dest, src) va_copy(dest, src) #else #define VA_COPY(dest, src) (dest) = (src) #endif void func3( va_list ap) { int i,j; i = va_arg( ap, char *); j = va_arg( ap, int); printf("func3 %s %d\n", i,j); va_end( ap); } void func2( va_list ap) { va_list ap2; VA_COPY( ap2, ap); func3( ap2); VA_COPY( ap2, ap); func3( ap2); } void func( int a, ... ) { va_list ap; va_start( ap, a); func2( ap); va_end( ap); } int main() { func( 1,"hallo",2 ); func( 1,"sdjf",3 ); return 0; }