次のようなデバッグ コードがあります。
#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__)
最後のマクロを使用して、エラーが発生した場所をデバッグ出力に挿入できるようにします。ただし、次のように関数を呼び出すと:
my_error("Uh oh!");
コードをC99 にしたいので、これをコンパイルすると、次のエラーが発生します。
error: ISO C99 requires rest arguments to be used
への呼び出しを変更することでこれを解決できることを知っています
my_error("Uh oh!", NULL);
しかし、見栄えを良くする方法はありますか? ありがとう!