当我在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()
答案 0 :(得分:2)
有一些工具(例如,Coverity)可以检测宏/断言中的副作用。 CERT提供list of such tools
答案 1 :(得分:0)
如果您在调试版和发布版本中虔诚地运行它们,单元测试将检测到这种错误。