yanyiwu / limonp

C++ headers(hpp) library with Python style.
MIT License
127 stars 44 forks source link

LIMONP_CHECK应该何时使用? #6

Closed lotusnowshen closed 10 years ago

lotusnowshen commented 10 years ago

我注意到muduo中也使用了类似的技巧,貌似这是google的开源代码吧

它应该在什么场合下使用?有什么优点呢?

yanyiwu commented 10 years ago

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

lotusnowshen commented 10 years ago

多谢,以前没注意NDEBUG的问题。