#include <stdarg.h> void parseDumparg(E_Dump_Type eType, ...) { va_list arg_ptr; va_start(arg_ptr, eType); switch(eType) { case E_DUMP_arg2: { int i = va_arg(arg_ptr, int); printf("%d, %d ", eType, i); break; } case E_DUMP_arg3: { int i = va_arg(arg_ptr, int); int j = va_arg(arg_ptr, int); printf("%d, %d, %d ", eType, i, j); break; } default: break; } va_end(arg_ptr); return; } typedef enum{ E_DUMP_arg1, E_DUMP_arg2, E_DUMP_arg3 }E_Dump_Type; parseDumparg(E_DUMP_arg2,200); parseDumparg(E_DUMP_arg3,20, 450);