#include <boost/assert.hpp>
int main()
{
int a = 177;
BOOST_ASSERT(a < 99);//等同于标准库的 assert()
BOOST_ASSERT_MSG(a < 99,"a应该小于99");
}
默认这两个宏仅在debug模式下有用。
禁用断言
在导入头文件 “boost/assert.hpp” 之前添加:
#define BOOST_DISABLE_ASSERTS
可使上面两个断言的宏不起作用。
拓展用法
如果在导入头文件之前添加:
#define BOOST_ENABLE_ASSERT_HANDLER
那么:
- 在release模式断言也将运行。
- 处理断言的方式不是弹出弹窗,而是将断言信息发到两个函数,函数已经定义好,需要用户自己实现其内容。
#define BOOST_ENABLE_ASSERT_HANDLER
#include <boost/assert.hpp>
namespace boost
{
//处理BOOST_ASSERT
void assertion_failed(char const * expr,
char const * function,
char const * file,
long line)
{
qDebug()<<"断言失败assertion_failed:"<<expr<<Qt::endl
<<function<<Qt::endl
<<file<<Qt::endl
<<line;
}
//处理BOOST_ASSERT_MSG
void assertion_failed_msg(char const * expr,
char const * msg,
char const * function,
char const * file,
long line)
{
qDebug()<<"断言失败assertion_failed_msg:"<<expr<<Qt::endl
<<function<<Qt::endl
<<file<<Qt::endl
<<line<<Qt::endl
<<msg;
}
}
int main()
{
int a = 177;
BOOST_ASSERT(a < 99);
BOOST_ASSERT_MSG(a < 99,"a应该小于99");
}