NDEBUG |
| ||||
NDEBUG | |
ヘッダ | #include <assert.h> 注意:マクロNDEBUGは、このヘッダ内で参照されるだけであって、定義はされない。 |
概 要 | ソースファイル中に<assert.h>をインクルードする時点で、NDEBUGがマクロ名として定義されている場合、assertマクロは、以下のように定義される。
#define assert(ignore) ((void)0)すなわち、asserマクロは、実質的に何も行わないマクロとなる。 C99 C11 assertマクロは、<assert.h>がインクルードされるごとに、その時点のNDEBUGの状態にしたがって再定義される。 |
補 足 | NDBUGは、標準ライブラリで提供されるマクロではなく、標準ライブラリassertの挙動を変えるためにユーザが定義するマクロである。以下のように、ソースファイル中に<assert.h>をインクルードする前の時点で、ユーザが自ら定義する。
#define NDBUG #include <assert.h>このようにNDBUGを定義することによって、assertマクロ本来の機能を無効にすることができる。 C99 C11 以下に示すように、一つのプログラム内の個々のassertマクロの挙動を指定できることが保証される。 #define NDBUG #include <assert.h> /* assertマクロの呼出し① */ #undef NDBUG #include <assert.h> /* assertマクロの呼出し② */ |