BohYoh.comトップページへ  NDEBUG
C言語 標準ライブラリ アルファベット順索引 ヘッダ別索引 ホームページへ C言語講座のページ

C89  C99  C11  診断機能
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マクロの呼出し② */


BohYoh.comトップページへ