アサート・マクロとは何か、使い方
assert.hはC言語のヘッダファイルで、マクロ関数assertとマクロ変数NDEBUGを定義します。
アサートマクロはプログラム中でアサートテストのために、ある条件が成立しているかどうかを判定するために用いられます。条件が真であればプログラムの実行は継続され、条件が偽であればアサート失敗となり、プログラムは終了してエラーが出力されます。定義は次のとおりです。
#define assert(expression) ((void)0)
コードにassertマクロ関数を用いる方法は次のとおりです。
#include <assert.h>
int main() {
int x = 5;
assert(x > 0); // 断言x大于0
return 0;
}
上のコードでは、x の値が 0 以下である場合、プログラムの実行は終了され、エラーメッセージが出力されます。なお、アサーションはデバッグ時に使用され、プログラム中の論理的な間違いを発見するのに役立ちます。
さらに、assert.hヘッダファイルでは、アサーションのオン・オフを制御するマクロ変数NDEBUGが定義されています。NDEBUGマクロ変数が定義されていると、assertマクロ関数は無効になり、アサーションチェックが行われなくなります。プログラムを正式リリースする際には、プログラムのパフォーマンスに影響しないようにNDEBUGマクロ変数を定義するのが一般的です。
#include <assert.h>
#ifdef NDEBUG
#undef assert
#define assert(expression) ((void)0)
#endif
int main() {
int x = 5;
assert(x > 0); // 断言将会被忽略
return 0;
}
NDEBUG マクロが定義されている場合は、assert マクロ関数は、assert チェックを行わないエンプティ操作として再定義されます。