[解決済み] アサートへのメッセージの追加
2022-03-03 12:36:40
質問
ハロー!
assertステートメントにカスタムメッセージを追加する方法を探しています。 私はこの質問を見つけました assertでカスタムメッセージを追加しますか? が、そこではメッセージは静的なものです。私はこのようなことをしたいです。
assert((0 < x) && (x < 10), std::string("x was ") + myToString(x));
アサーションが失敗したとき、通常の出力に加えて、例えば "x was 100" のような出力が欲しいのです。
解決方法は?
ここでは運が悪かったとしか言いようがありません。最良の方法は、自分で定義することです。
assert
マクロを使用します。
基本的には、このような形になります。
#ifndef NDEBUG
# define ASSERT(condition, message) \
do { \
if (! (condition)) { \
std::cerr << "Assertion `" #condition "` failed in " << __FILE__ \
<< " line " << __LINE__ << ": " << message << std::endl; \
std::terminate(); \
} \
} while (false)
#else
# define ASSERT(condition, message) do { } while (false)
#endif
これは
ASSERT
マクロは、デバッグ不要のマクロ
NDEBUG
が定義されていない場合。
そうすると、こんな風に使うんですね。
ASSERT((0 < x) && (x < 10), "x was " << x);
を文字列化する必要がないので、あなたの使い方より少し簡単です。
"x was "
と
x
を明示的に指定すると、マクロによって暗黙のうちに行われます。
関連
-
[解決済み】非静的メンバ関数への参照を呼び出す必要がある
-
[解決済み】C++のGetlineの問題(オーバーロードされた関数 "getline "のインスタンスがない
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] Pythonの "assert "はどのように使うのですか?
-
[解決済み] 例外がスローされたことを確認するためにAssertを使用するにはどうすればよいですか?
-
[解決済み] アサートの使用に関するベストプラクティス?
-
[解決済み] git logを1行目だけ出力するには?
-
[解決済み】画像処理。コカ・コーラ缶」認識のためのアルゴリズム改良
-
[解決済み] Intel CPU の _mm_popcnt_u64 で、32 ビットのループカウンターを 64 ビットに置き換えると、パフォーマンスが著しく低下します。
-
[解決済み】静的定数文字列(クラスメンバ)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】C++ クラスヘッダが含まれているときに「不明な型」があるのはなぜですか?重複
-
[解決済み】識別子 "string "は未定義?
-
[解決済み】C++ - 解放されるポインタが割り当てられていないエラー
-
[解決済み】C-stringを使用すると警告が表示される。"ローカル変数に関連するスタックメモリのアドレスが返される"
-
[解決済み】C++でユーザー入力を待つ【重複あり
-
[解決済み】抽象クラス型の無効なnew-expression
-
[解決済み】デバッグアサーションに失敗しました。C++のベクトル添え字が範囲外
-
[解決済み】なぜ、サイズ8の初期化されていない値を使用するのでしょうか?
-
[解決済み】システムが指定されたファイルを見つけられませんでした。
-
[解決済み] assertでカスタムメッセージの追加?