#include #include typedef enum { NOTICE, WARN, ERROR, FATAL } ErrorLevel; #define errortest(elevel,emessage) \ doerr(elevel,emessage), (elevel >= ERROR ? exit(0) : 0) void doerr( ErrorLevel level, char *msg ) { printf( "Error: %s\n", msg ); } static inline void __attribute__((noreturn)) fake_exit() { } int main() { int i=0; errortest( NOTICE, "test1" ); i=1; errortest( FATAL, "test2" ); i=2; return 0; }