Ich möchte einen Proxy erstellen für fprintf
, etwa so:
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);
}
Aber was soll ich an die Stelle der zweiten Ellipse setzen? Ist es überhaupt möglich?
Ich würde es gerne noch ein bisschen vereinfachen, etwa so:
#define RAISE(...) raise_exception(__FILE__, __LINE__, ...)
Aber ich glaube auch nicht, dass das funktionieren würde.
Irgendwelche Ideen? Danke!
UPDATE
Direkt von Wikipedia :
Makros mit variablen Argumenten wurden in der ISO/IEC 9899:1999 (C99) eingeführt.
Die Definition, die das tun würde, sollte also so aussehen:
#define RAISE(...) raise_exception(__FILE__, __LINE__, __VA_ARGS__)