[C言語 標準ライブラリ] assert.hの使い方

スポンサーリンク

マクロ

NDEBUG

#include <assert.h>では定義されません。
NDEBUGを定義すると、後述するassertマクロ関数を無効にすることができます。
Visual Studioでは、リリースモードの場合にプリデファインとして定義されます。
デバッグモードの場合は定義されません。

関数

assert

宣言

#ifdef NDEBUG
#define assert(expr) ((void)0)
#else
#define assert(expr) ((expr) ? (void)0 : __assert(#expr, __FILE__, __LINE__))
#endif

引数

expr : 条件式

機能

プリデファイン”NDEBUG”が定義されている(リリースモード)の場合、何もしません。
プリデファイン”NDEBUG”が定義されていない(デバッグモードの)場合、assertマクロ関数の引数に条件式を記述することで、プログラム実行中に条件式を診断してプログラムを停止することができます。
条件式が真(0以外)の場合は何もしません。偽(0)の場合は、プログラムの実行を停止して、assertマクロ関数の実行個所を表示します。

assertはデバッグ用途で使用します。

使用例

#include <assert.h>


int Func1(int a)
{
	if(a == 0){
		return 1;
	}else{
		assert(a == 1);
		return 0;
	}
}

引数aが1の場合は、assertの条件式が真(1)になるので素通りしますが、引数aが0でも1でもない場合、VisualStudioでは、下図のような診断メッセージが出力されます。

コメント