有没有办法添加或编辑assert抛出的消息?我想用像这样的东西
assert(a == b, "A must be equal to B");然后,编译器添加行、时间等等……
有可能吗?
发布于 2010-09-12 06:41:34
我见过的一个技巧是使用&&运算符。由于如果指针不为空,则指针“为真”,因此您可以在不更改条件的情况下执行以下操作:
assert(a == b && "A is not equal to B");因为assert显示了失败的条件,所以它也会显示您的消息。如果这还不够,您可以编写自己的myAssert函数或宏,它们将显示您想要的任何内容。
发布于 2012-07-16 22:50:31
另一种选择是颠倒操作数并使用逗号运算符。您需要额外的圆括号,这样逗号就不会被视为参数之间的分隔符:
assert(("A must be equal to B", a == b));(这是从上面的评论中复制的,为了更好的可见性)
发布于 2012-10-09 11:03:44
BOOST_ASSERT_MSG(expre, msg)http://www.boost.org/doc/libs/1_51_0/libs/utility/assert.html
你可以直接使用它,或者复制Boost的代码。还请注意,Boost assert仅用于头文件,因此如果您不想安装所有Boost,则可以只抓取该单个文件。
https://stackoverflow.com/questions/3692954
复制相似问题