当定义了宏 BOOST_ENABLE_ASSERT_HANDLER 后,使用 BOOST_ASSERT() 断言失败后,会调用 boost::assertion_failed() 函数,该函数声明在 boost 名字空间内,但特意被设计为没有实现。
#include#include namespace boost{ void assertion_failed(char const* expr,char const * function,char const* file,long line) { boost::format fmt("Expression:%s\nFunciton:%s\nFile:%s\nLine:%s\n"); fmt %expr %function %file %line; std::cout< #include #include int main(){ assert(1 == 1); //实际上是一个宏,尽管它不是大写。编译时加上 -DNDEBUG 无效 std::string str = "Hello"; BOOST_ASSERT(str.size() == 0 && "str's size is 0."); //效果同于assert(),仅在debug模式下有效。&& 后面的内容相当于注释,方便调试}
#define BOOST_TEST_MAIN#includeBOOST_AUTO_TEST_SUITE(test_suite_1)BOOST_AUTO_TEST_CASE(test_case_1){ BOOST_CHECK(1); BOOST_CHECK_EQUAL(1,1);}BOOST_AUTO_TEST_CASE(test_case_2){ BOOST_CHECK(1); BOOST_CHECK_EQUAL(1,1);}BOOST_AUTO_TEST_SUITE_END()