Closed lotusnowshen closed 10 years ago
使用场景和assert 一样。但是 assert 会因为编译选项宏定义 NDEBUG被定义的时候失效掉。
也就是说比如你的代码里面有行代码是 assert(funct());
在 NDEBUG 宏定义被定义的时候,这行代码等于是不存在的。
也就是functi()
这个函数不会被调用。这样明显会造成和不符合预期的结果。
所以定义一个自己用的 CHECK 宏来在某种情况下替代 assert 是非常必要的。
而 google 的开源代码里面的 CHECK 更复杂些,它依赖 glog,也就是能实现在 CHECK 失败的时候程序退出之前打出更详细的日志信息。
而对于自己个人使用来说,我觉得 LIMONP_CHECK 已经足够了。
多谢,以前没注意NDEBUG的问题。
我注意到muduo中也使用了类似的技巧,貌似这是google的开源代码吧
它应该在什么场合下使用?有什么优点呢?