#define err(...) fprintf(stderr, __VA_ARGS__), fflush(stderr)
struct finalize {
char *s;
finalize( const char *fmt, ... ) {
s = new char[999];
va_list list;
va_start(list, fmt);
vsprintf(s, fmt, list);
err(s), err(" [begin]\n");
}
~finalize() {
err(s), err(" [end]\n");
}
};
/** Пример использования. Дебаг вывод точки входа и точки выхода из функции f(x) */
int f( int x ) {
finalize _("f: x = %d", x);
if (x == 1)
return 1;
return 2;
}