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

Antworten auf die Frage(2)

Ihre Antwort auf die Frage