ASSERT
id:yaneuraoさんの話の中でASSERTの話が出てきたのでよい機会なので使おうかと思う。
コンパイラセットによってはASSERTマクロが事前定義されているようだが、カーネル内で使うので自前で適当に作ってみた。
自信がないので突っ込み募集・・・
#ifdef DEBUG_MODE #define onAssertError() exit(1) #define ASSERT(condition) {if (!(condition)) {printf("ASSERT failure %s:%d: %s\n", __FILE__, __LINE__, #condition);onAssertError();}} #else #define ASSERT(condition) {} // thanks! yaneuraoさん #endif
onAssertError()は終了関数をラッピングしたものです。
DEBUG_MODEは、NDEBUGをあえて使わないようにしています。