[解決済み】assert関数とは何ですか?
2022-04-01 05:22:47
質問
OpenCVのチュートリアルを勉強していたら
assert
という関数がありますが、これは何をするものですか?
どのように解決するのですか?
assert
は、引数が偽であることが判明した場合、プログラムを終了させます (通常、assert 文を引用したメッセージを表示します)。これはデバッグ時に、予期せぬ事態が発生した場合にプログラムが失敗することをより明確にするためによく使われます。
例えば
assert(length >= 0); // die if length is negative.
また、このように失敗したときに表示される、より情報量の多いメッセージを追加することもできます。
assert(length >= 0 && "Whoops, length can't possibly be negative! (didn't we just check 10 lines ago?) Tell jsmith");
その他、こんな感じ。
assert(("Length can't possibly be negative! Tell jsmith", length >= 0));
リリース (非デバッグ) ビルドの場合は
assert
ステートメントを定義することで
NDEBUG
マクロを、通常はコンパイラ・スイッチで指定します。このことから、プログラムには
決して
は、アサートマクロの実行に依存する。
// BAD
assert(x++);
// GOOD
assert(x);
x++;
// Watch out! Depends on the function:
assert(foo());
// Here's a safer way:
int ret = foo();
assert(ret);
プログラムが abort() を呼び出すことと、何も保証されていないことの組み合わせから、アサートは開発者が想定していることをテストするためにのみ使用されるべきです。
関連
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++コンパイルタイムエラー:数値定数の前に期待される識別子
-
[解決済み】エラー:不完全な型へのメンバーアクセス:前方宣言の
-
[解決済み] 数値定数の前にunqualified-idを付けて、数値を定義することを期待する。
-
[解決済み] explicit キーワードの意味は?
-
[解決済み] using namespace std;」はなぜバッドプラクティスだと言われるのですか?
-
[解決済み] ルール・オブ・スリーとは?
-
[解決済み] コピーアンドスワップ慣用句とは?
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み】C/C++の"-->"演算子とは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] テスト
-
[解決済み】getline()が何らかの入力の後に使用されると動作しない 【重複あり
-
[解決済み】c++でstd::vectorを返すための効率的な方法
-
[解決済み】Visual C++で "Debug Assertion failed "の原因となる行を見つける。
-
[解決済み】C++の余分な資格エラー
-
[解決済み】標準ライブラリにstd::endlに相当するタブはあるか?
-
[解決済み】演算子のオーバーロード C++; <<操作のパラメータが多すぎる
-
[解決済み】デバッグアサーションに失敗しました
-
[解決済み] スタックアロケーションにより初期化されていない値が作成された
-
[解決済み] Cコードにおけるエラー処理