boost诊断工具BOOST_ASSERT、BOOST_VERIFY、BOOST_STATIC_ASSERT
boost.assert提供的主要工具是BOOST_ASSERT宏,类似于C语言的assert,提供运行时的断言,但功能有所增强;
默认情况下,BOOST_ASSERT宏等同于assert宏: # define BOOST_ASSERT(expr) assert(expr);
BOOST_ASSERT宏仅会在Debug模式下起作用,在Release模式下不会被编译,不会影响运行效率;
BOOST_ASSERT宏是标准断言宏assert的增强版本,使用更加灵活;
定义BOOST_DISABLE_ASSERTS宏可禁止BOOST_ASSERT作用,但assert宏不会受影响;
定义BOOST_ENABLE_ASSERT_HANDLER宏将导致BOOST_ASSERT的行为发生改变;
BOOST_VERIFY宏是assert库提供的另一种工具,断言表达式一定会被求值,其余与BOOST_ASSERT行为相同。
assert与BOOST_ASSERT是运行时断言,但有时候运行时已经很晚了,程序已经发生了无可挽回的错误;
static_assert库能够把断言诊断的时刻由运行时提前到编译期,增加程序的健壮性;
BOOST_STATIC_ASSERT是一个编译期断言,使用typedef和模板元技术实现;
BOOST_STATIC_ASSERT可以出现在程序的任何位置:命名空间中、类中、函数中.
|
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
/*
boost.assert提供的主要工具是BOOST_ASSERT宏,类似于C语言的assert,提供运行时的断言,但功能有所增强; 默认情况下,BOOST_ASSERT宏等同于assert宏: # define BOOST_ASSERT(expr) assert(expr); BOOST_ASSERT宏仅会在Debug模式下起作用,在Release模式下不会被编译,不会影响运行效率; BOOST_ASSERT宏是标准断言宏assert的增强版本,使用更加灵活; 定义BOOST_DISABLE_ASSERTS宏可禁止BOOST_ASSERT作用,但assert宏不会受影响; 定义BOOST_ENABLE_ASSERT_HANDLER宏将导致BOOST_ASSERT的行为发生改变; BOOST_VERIFY宏是assert库提供的另一种工具,断言表达式一定会被求值,其余与BOOST_ASSERT行为相同。 assert与BOOST_ASSERT是运行时断言,但有时候运行时已经很晚了,程序已经发生了无可挽回的错误; /************************************************************************/ /************************************************************************/ namespace boost template<typename T> double func(int x) int main(void) ; BOOST_STATIC_ASSERT( == sizeof(short)); cin.get(); |
boost诊断工具BOOST_ASSERT、BOOST_VERIFY、BOOST_STATIC_ASSERT的更多相关文章
- C++ 之Boost 实用工具类及简单使用
本文将介绍几个 Boost 实用工具类,包括 tuple.static_assert.pool.random 和 program_options等等.需要对标准 STL 具备一定的了解才能充分理解本文 ...
- [转]linux 系统监控、诊断工具之 IO wait
1.问题: 最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端.本机都没问题,但是没想到上了第二份日志之后,问题来了: 集群中的某台机器 top 看到负载巨高,集群中的机器 ...
- [转]网络诊断工具:MTR
MTR是Linux平台上一款非常好用的网络诊断工具,集成了traceroute.ping.nslookup的功能,用于诊断网络状态非常有用.能按要求对路由中所有节点进行批量测试 第一列(Host):I ...
- 使用vs自带的性能诊断工具
visual studio是个强大的集成开发环境,内置了程序性能诊断工具.下面通过两段代码进行介绍. static void Main( string[] args) { Test1(); Test2 ...
- Linux 系统监控和诊断工具:lsof
1.lsof 简介 lsof 是 Linux 下的一个非常实用的系统级的监控.诊断工具. 它的意思是 List Open Files,很容易你就记住了它是 “ls + of”的组合~ 它可以用来列出被 ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 3 部分: Systemtap
Systemtap的原理,Systemtap与DTrace比较,以及安装要求和安装步骤本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprob ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap, 第 2 部分: DTrace
DTrace的原理本系列文章详细地介绍了一个 Linux 下的全新的调式.诊断和性能测量工具 Systemtap 和它所依赖的基础 kprobe 以及促使开发该工具的先驱 DTrace 并给出实际使用 ...
- Linux 下的一个全新的性能测量和调式诊断工具 Systemtap,第 1 部分: kprobe
kprobe 的原理.编程接口.局限性和使用注意事项 本系列文章详细地介绍了一个Linux下的全新的调式.诊断和性能测量工具Systemtap和它所依赖的基础kprobe以及促使开发该工具的先驱DTr ...
- 中小研发团队架构实践之生产环境诊断工具WinDbg
生产环境偶尔会出现一些异常问题,WinDbg或GDB是解决此类问题的利器.调试工具WinDbg如同医生的听诊器,是系统生病时做问题诊断的逆向分析工具,Dump文件类似于飞机的黑匣子,记录着生产环境程序 ...
随机推荐
- 百度地图JS--2
转载请注明出处 本文为原创 作者:injuer 严禁用于商业用途,仅学习交流 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...
- Com与.Net互操作
Com与.Net互操作 .Net调用Com组件主要分为两类:静态调用及动态调用.所谓静态调用:指通过tlbimp.exe命名产生Com组件在.Net环境下的包装类,然后通过这个包装类来访问Com组件. ...
- 英特尔 Android* 开发者指南上的对等应用
简单介绍 当没有 Wi-Fi 訪问点或互联网訪问时,Android* 应用可能须要对等连接在两台或多台 Android* 设备之间建立连接. 比方,文件共享应用和多人游戏. 该功能可使用 NFC.蓝牙 ...
- 将项目从tomcat 迁移到JBoss5.0
http://java-boy.iteye.com/blog/531411从Tomcat升级到JBoss5.1真是一个痛苦的过程,可能遇到很多问题.以下是我碰到的问题,及解决方法. 一.Hiberna ...
- C#实现播放声音的方法
文章来自学IT网:http://www.xueit.com/html/2009-09/21_4598_00.html 在这里介绍使用C#实现播放声音的几种方法,都是利用组件等方法来实现的,有兴趣的话可 ...
- 机器学习之数据预处理,Pandas读取excel数据
Python读写excel的工具库很多,比如最耳熟能详的xlrd.xlwt,xlutils,openpyxl等.其中xlrd和xlwt库通常配合使用,一个用于读,一个用于写excel.xlutils结 ...
- LNMP架构四
php-fpm的pool(连接池) 我们查看php的进程时,会发现,在最后一个pool的选项,而这个就是我们在php-fpm配置文件里写的一个连接池. [root@bogon linux.com]# ...
- LAMP架构二
安装PHP7 1.查看php配置文件信息(phpinfo),php有两个配置文件开发环境和生产环境 [root@localhost php-5.6.30]# /usr/local/php/bin/ph ...
- mysql产生随机数并连接字符串
concat('a','b','c');//连接字符串 rand();//产生随机数 floor();//取整数 UPDATE user set reg_ip= concat(floor(RAND() ...
- ssh理论知识
一.spring工作原理: 1.spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作. 2.DispatcherSer ...