assert()修改变量时发出警告
warning when assert() modifies variables
当修改assert()
或debug_print()
内部的变量时,我能做些什么来获得编译器警告吗?
我想防止像这样的错误发生
int i=0;
assert((++i)); // i is modified only in debug mode
std::set<int> s;
debug_print(("item inserted: %dn", s.insert(5).first )); // set is modified only in debug mode
假设我有一组仅在调试模式下构建的包装器函数,在那里我可以进行必要的检查
MyDbgAssert() // #define that wraps assert()
MyDbgPrint() // #define that wraps printf()
有一些工具(例如Coverity)可以检测宏/断言中的副作用。CERT提供了此类工具的列表
如果您在调试和发布版本中都认真运行单元测试,那么单元测试将检测到这种错误。
相关文章:
- 使用typeid警告未使用的变量
- 警告:左移计数 >= 在 C++ 中将字节流读取为双精度变量时的类型宽度
- 警告 C4101 未引用的局部变量
- C++未使用的变量警告,即使我在函数结束时返回它
- XCode 警告"此处需要实例化变量'Singleton:<Foo>:_instance',但没有可用的定义
- 我可以在初始化之前使用 std::array 成员变量中的 data() 指针吗?发出警告
- 显示 C++ 中"anonymous"变量创建的警告
- C4458 警告 - 如何查找使用的变量
- libmysql:警告:返回局部变量"行"的地址(C++/C)
- 是否可以将移动的变量标记为不再可用,并在使用它时收到编译器警告?
- 未显式初始化C++全局变量时发出警告?
- 警告:变量未初始化
- 如何暂时禁用使用 [[已弃用]] 变量的警告?
- [[maybe_unused]] 在成员变量上,GCC 警告(不正确?)该属性被忽略
- C++ 如何禁用具有不同符号变量比较的特定行的编译器警告?
- 为什么 ++ 运算符触发器返回对局部变量警告的引用
- 是否有 GCC 标志来发出有关作用域内相同变量重定义的警告?
- 警告:变量已设置,但未使用
- 警告:变量“{variable}”已设置但未使用-C++
- 不一致的警告:变量可能会被“longjmp”或“vfork”破坏