0

assert()または内の変数を変更したときにコンパイラの警告を表示するためにできることはありdebug_print()ますか?

このようなミスを防ぎたい

int i=0;
assert((++i)); // i is modified only in debug mode

std::set<int> s;
debug_print(("item inserted: %d\n", s.insert(5).first )); // set is modified only in debug mode

必要なチェックを実行できる、デバッグ モードのみでビルドされる一連のラッパー関数があるとします。

MyDbgAssert() // #define that wraps assert()
MyDbgPrint()  // #define that wraps printf() 
4

2 に答える 2

2

マクロ/アサーションの副作用を検出するツール (Coverity など) があります。CERT はそのようなツールのリストを提供します

于 2013-02-21T17:47:00.693 に答える
0

ユニットテストは、デバッグビルドとリリースビルドの両方で忠実に実行すると、この種のエラーを検出します。

于 2013-02-21T18:27:53.760 に答える