Вот хак:
// hack.c
int last_exit;
// hack.h
extern int last_exit;
#define exit(x) (exit)(last_exit = (x))
Не будет работать для return
, но, эй, он портативный!
В заметке, более удобной для сопровождающих, вы можете рассмотреть возможность написания какой-либо формы оболочки, чтобы сделать что-то подобное для вас. Хакерство о том, как GCC реализует exit()
, звучит как кошмар обслуживания. Лучше написать несколько вспомогательных функций, которые выходят за вас, и, возможно, даже замаскировать их с помощью макросов, если вы любите подобные вещи. С помощью макроса вы можете даже заменить return
вызовы, если вы всегда вызываете return
с круглыми скобками. Хотя это похоже на еще один кошмар обслуживания.