我无法评论答案本身,因此:关于Using comma to prevent the need for brace pair
#define MY_ASSERT(expr) ((expr) || (debugbreak(), 0))
(debugbreak(),0)如何返回0?我知道将debugbreak()的返回值丢弃并返回0,但是debugbreak会生成一个异常,那么以后如何评估呢?我想我的问题可以推广到任何类似的二进制运算符,其中要评估的第一部分退出程序。
最佳答案
如果断言触发,将不会评估任何内容,但是两个表达式都必须具有正确的返回类型,否则此宏将中断编译。