Variadische Makros mit 0 Argumenten in C99
Ich habe einen Debug-Code, der wie folgt aussieht:
#define STRINGIFY(x) #x
#define TOSTRING(x) STRINGIFY(x)
#define AT __FILE__ ":" TOSTRING(__LINE__)
void __my_error(const char*loc, const char *fmt, ...);
#define my_error(fmt, ...) __my_error(AT, fmt, ##__VA_ARGS__)
Das letzte Makro wird verwendet, damit ich die Position in die Debug-Ausgabe einfügen kann, an der der Fehler aufgetreten ist. Wenn ich die Funktion jedoch wie folgt aufrufe:
my_error("Uh oh!");
Ich würdemöge mein Code muss C99 sein, daher erhalte ich beim Kompilieren die folgende Fehlermeldung:
error: ISO C99 requires rest arguments to be used
Ich weiß, dass ich das lösen kann, indem ich den Anruf auf @ änder
my_error("Uh oh!", NULL);
Aber gibt es eine Möglichkeit, dies weniger hässlich aussehen zu lassen? Vielen Dank