Wo hast du den Header her?
Wie bereits vorgeschlagen solltest du mal die Built-Ins versuchen:
typedef __builtin_va_list va_list;
#define va_start(ap, X) __builtin_va_start(ap, X)
#define va_arg(ap, type) __builtin_va_arg(ap, type)
#define va_end(ap) __builtin_va_end(ap)
Außerdem ist es natürlich wichtig, dass wenn du printf aufrufst, die Funktion vorher mit der korrekten Signatur deklariert wird.