博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[原]C断言/静态断言
阅读量:6253 次
发布时间:2019-06-22

本文共 676 字,大约阅读时间需要 2 分钟。

关于断言,可以作为一种很强大的调试方式或者程序运行时的错误诊断

但是断言也不是适合于各种地方,服务器软件和嵌入式程序一般不适用,断言会强制中断正在运行的程序,对于服务器等程序来说,

将会是一个灾难。加上,断言会加剧CPU 的负载,其中会调用一些函数。

作为调试时使用断言是个不错的选择

一般断言:

#ifndef NDEBUG

          assert( conditon ) ;

#endif

这样,你的断言会在没有定义NDEBUG 的时候检测是否assert(..)中的表达式为真,如果不为真,将终止程序

但是,作为一种调试方式,assert()一般不用于判断用户的输入,而是断言程序在某个时刻的状态一定为真,当然,终止程序的方法有点粗鲁,但是比起让错误的程序继续执行更加有效

下面是静态断言

为什么使用静态断言?

静态断言可以在编译时就对程序的错误做出判断,而普通断言只能在程序运行出现错误的时候做出退出并产生调试信息

static_assert(condition,string_condition);

第一次参数是表达式,第二个参数是输出的信息

static_assert()是C++ 新增的内容

在C语言里可以这样实现:

#define JOIN( X , Y ) JOIN_AGIN( X, Y )#define JOIN_AGIN(X,Y) X##Ytypedef static_assert(e)\          typedef char JOIN(assert_failed_at_line,__LINE___) [(e)?1:-1]

  

转载地址:http://cdnsa.baihongyu.com/

你可能感兴趣的文章
SVN与TortoiseSVN实战:补丁详解
查看>>
java一些面试题
查看>>
干货型up主
查看>>
获取页面中所有dropdownlist类型控件
查看>>
读《淘宝数据魔方技术架构解析》有感
查看>>
[转载]如何破解Excel VBA密码
查看>>
手机web——自适应网页设计(html/css控制) - 51CTO.COM
查看>>
【BZOJ】2563: 阿狸和桃子的游戏
查看>>
redis 中文字符显示
查看>>
国内外MD5在线解密网站
查看>>
【OC语法要闻速览】一、方法调用
查看>>
Git-命令行-删除本地和远程分支
查看>>
本文将介绍“数据计算”环节中常用的三种分布式计算组件——Hadoop、Storm以及Spark。...
查看>>
顺序图【6】--☆☆
查看>>
Docker Swarm 让你事半功倍
查看>>
string.Format字符串格式说明
查看>>
[转]IC行业的牛人
查看>>
javaScript事件(四)event的公共成员(属性和方法)
查看>>
linux系统常用命令
查看>>
在 Word 中的受支持的区域设置标识符的列表
查看>>