assert()修改变量时发出警告

时间:2013-02-21 17:35:11

标签: c++

当我在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() 

2 个答案:

答案 0 :(得分:2)

有一些工具(例如,Coverity)可以检测宏/断言中的副作用。 CERT提供list of such tools

答案 1 :(得分:0)

如果您在调试版和发布版本中虔诚地运行它们,单元测试将检测到这种错误。