assert
提供: cppreference.com
| ヘッダ <cassert> で定義
|
||
| #ifdef NDEBUG #define assert(condition) ((void)0) |
||
マクロ assert の定義は、標準ライブラリで定義されない別のマクロ NDEBUG に依存します。
ソースコード内の <cassert> がインクルードされた地点で NDEBUG がマクロ名として定義されている場合、 assert は何もしません。
NDEBUG が定義されていない場合、 assert は引数 (スカラー型を持たなければなりません) をゼロと等しいか比較します。 等しければ、 assert は処理系固有の診断情報を標準エラー出力に出力し、 std::abort を呼びます。 診断情報は expression のテキスト、標準のマクロ __FILE__、 __LINE__ および標準の変数 __func__ の値を含むことが要求されます。
|
以下のいずれかの場合、式
|
(C++17およびそれ以降) |
目次 |
[編集] 引数
| condition | - | スカラー型の式 |
[編集] 戻り値
(なし)
[編集] ノート
assert は関数ライクなマクロであるため、 condition 内の括弧で保護されていないコンマはマクロ引数の区切りと解釈されます。 そのようなコンマはテンプレート引数リストでしばしば現れます。
assert(std::is_same_v<int, int>); // error: assert does not take two arguments assert((std::is_same_v<int, int>)); // OK: one argument static_assert(std::is_same_v<int, int>); // OK: not a macro
[編集] 例
Run this code
出力例:
Execution continues past the first assert test: test.cc:10: int main(): Assertion `2+2==5' failed. Aborted
[編集] 関連項目
| static_assert | コンパイル時のアサーションチェックを行います (C++11およびそれ以降) |
| (クリーンアップせずに) プログラムを異常終了させます (関数) | |
| assert の C言語リファレンス
| |