#include #include #include using namespace std; void foo(char* format, ...); int main() { foo("i", 1); foo("ic", 1, 'a'); return 0; } void foo(char* buf, ...) { void** varg = (void**)(&buf); char* format = (char*)(*varg++); cout << "Format: " << format << endl << flush; for (int i = 0; format[i] != '\0'; i++) { QString data; switch (format[i]) { case 'i': cout << "int: " << flush << setw(5) << flush << (*((int*)(*varg++))) << flush; break; case 'c': cout << "char: " << flush << setw(5) << flush << (*((char*)(*varg++))) << flush; break; } cout << endl; } } // register int *varg = (int *)(&format); // register char *format = (char *)(*varg++); // register char *s = *((char **)varg++);