Я бы хотел создать прокси для fprintf
, вот так:
void raise_exception(char *filename, int line, char *format_string, ...) {
fprintf(stderr, "Exception in `%s`:%d!\n", filename, line);
fprintf(stderr, format_string, ...);
exit(EXIT_FAILURE);
}
Но что мне поставить вместо второго многоточия?Это вообще возможно?
Я хотел бы упростить это даже немного больше так:
#define RAISE(...) raise_exception(__FILE__, __LINE__, ...)
Но я не думаю, что это сработаетлибо.
Есть идеи?Спасибо!
ОБНОВЛЕНИЕ
Прямо из Википедия :
Макросы с переменным аргументом были введены в ISO / IEC 9899: 1999 (C99)
Таким образом, определение, которое будет делать это, должно выглядеть так:
#define RAISE(...) raise_exception(__FILE__, __LINE__, __VA_ARGS__)