assert
assert.h:インデックス への移動
ヘッダーファイル
assert.h
カテゴリ
診断ルーチン
プロトタイプ
void assert(int test);
説明
条件をテストし,場合によっては実行を中止します。
assert は,if 文に展開されるマクロです。test が 0 に評価された場合,assert マクロは次の _assert 関数を呼び出し,
void _RTLENTRY _EXPFUNC _assert(char * __cond, char * __file, int __line);
プログラムを中止します。_assert 関数は abort を呼び出し,stderr に次のメッセージを示します。
アサート失敗: %s ("%s",%d 行め)
このメッセージに示されている filename と linenum は,assert マクロが置かれているファイル名と行番号です。
ソースコードで,#include <assert.h> 指令の前に #define NDEBUG 指令(デバッグなし)を配置した場合,マクロは no-op に展開されます。つまり,assert 文がコメントアウトされます。
戻り値
なし。
例
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
struct ITEM {
int key;
int value;
};
/* リストに項目を追加し,リストが null でないことを確認する */
void additem(struct ITEM *itemptr) {
assert(itemptr != NULL);
/* リストに項目を追加する */
}
int main(void)
{
additem(NULL);
return 0;
}
移植性
POSIX | Win32 | ANSI C | ANSI C++ |
---|---|---|---|
+ |
+ |
+ |
+ |