zoukankan      html  css  js  c++  java
  • boost-断言

    标准assert宏的原型声明在<assert.h>中,其作用是如果它的测试条件为假,则调用abort()终止程序执行,程序退出的时候会弹出一个错误提示框,并向控制台输出所在文件及行号。assert()只针对debug版本,在Release版本中assert()是无效的。

    使用建议:每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败。

    boost中的BOOST_ASSERT有两点扩展功能:

    1. 可以通过定义BOOST_DISABLE_ASSERTS使在debug版本中也能停用BOOST_ASSERT()。

    2. 可以通过定义BOOST_ENABLE_ASSERT_HANDLER使断言出错的时候调用自定义的函数:

        如果定义了 BOOST_ENABLE_ASSERT_HANDLER,BOOST_ASSERT失败则会调用::boost::assertion_failed(),boost / assert.hpp中只声明了assertion_failed(), 可以自己定义它,它有4个参数, 分别是出错表达式串, 函数名, 文件名, 行号。

        如果未定义BOOST_ENABLE_ASSERT_HANDLER,则会调用标准的assert().

    #define BOOST_ENABLE_ASSERT_HANDLER
    #include "boost/assert.hpp"
    
    namespace boost
    {
        void assertion_failed(char const * expr, char const * function, char const * file, long line)
        {
            //todo
        }
    }
    
    
    int main()
    {
        BOOST_ASSERT(false);
        
        return 0;
    }

    转载出处及参考:http://blog.csdn.net/liangkaiming/article/details/5899655 ——liangkaiming

                          http://blog.csdn.net/jq0123/article/details/4470569 ——金庆

  • 相关阅读:
    Codeforces Round #567 (Div. 2) B. Split a Number
    es界面的分组,求平均值的操作
    es界面的查询命令
    es界面的crud
    WebStorm中自定义文档注释模板
    Vue 正确理解mounted、beforeUpdate、updated三个钩子函数的关系
    oracle分析函数
    vue中时间格式的处理
    vue-router params和query的区别
    vue中的深拷贝理解和实现
  • 原文地址:https://www.cnblogs.com/milanleon/p/5868703.html
Copyright © 2011-2022 走看看