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

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

将会是一个灾难。加上,断言会加剧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##Y

typedef static_assert(e)\

typedef char JOIN(assert_failed_at_line,__LINE___)

[(e)?1:-1]

c语言 静态断言,C断言/静态断言相关推荐

  1. java断言是什么_Java断言机制

    断言概述: J2SE 1.4 在语言上提供了一个新特性,就是 assertion 功能,他是该版本在 Java 语言方面最大的革新.从理论上来说,通过 assertion 方式可以证明程序的正确性,但 ...

  2. go语言用html桌面,Go语言实现简单的一个静态WEB服务器

    学习Go语言的一些感受,不一定准确. 假如发生战争,JAVA一般都是充当航母战斗群的角色. 一旦出动,就是护卫舰.巡洋舰.航母舰载机.预警机.电子战飞机.潜艇等等 浩浩荡荡,杀将过去. (JVM,数十 ...

  3. python unittest断言_python unittest之断言及示例

    assert.png 前言 python unintest单元测试框架提供了一整套内置的断言方法. 如果断言失败,则抛出一个AssertionError,并标识该测试为失败状态 如果异常,则当做错误来 ...

  4. 参数化,断言,参数化时为什么做断言,怎么做断言,如何确保断言的正确

    参数化是什么 参数化想必做过接口测试的各位小伙伴都不陌生,参数化是对一个接口进行多次重复类似的操作,通过将响应数据与接口API对比即可. 断言是什么 手动测试时,我们通过肉眼去确认程序的实际操作后呈现 ...

  5. smali语言详解之static静态代码块的声明与静态变量初始化赋值位置

    smali语言详解之static静态代码块的声明与静态变量初始化赋值位置 一.smali语言的静态代码块声明格式 .method static constructor <clinit>() ...

  6. beanshell断言_Jmeter之BeanShell断言使用

    1.Bean Shell常用内置变量 JMeter在它的BeanShell中内置了变量,用户可以通过这些变量与JMeter进行交互,其中主要的变量及其使用方法如下: log:用来记录日志文件,写入到j ...

  7. c语言 静态变量 初始化,c – 静态变量初始化两次

    考虑到我在编译单元中有一个静态变量,最后在静态库libA中.然后我有另一个编译单元访问这个变量,最终在一个共享库libB.so(所以libA必须链接到libB).最后,我有一个主要功能也直接从A访问静 ...

  8. 高级线性表——静态链表(最全静态链表解读)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  9. 静态变数和非静态变数_统计资料:了解变数

    静态变数和非静态变数 Statistics 101: Understanding the different type of variables. 统计101:了解变量的不同类型. As we ent ...

  10. 软考初级程序员易错题:在统一建模语言 (UML)中,( )展现了 一组对象以及它们之间的关系, 给出了系统的静态设计视图或静态进程视图,描述了( )中所建立的事物 实例的静态快照。

    在统一建模语言 (UML)中,( )展现了 一组对象以及它们之间的关系, 给出了系统的静态设计视图或静态进程视图,描述了( )中所建立的事物 实例的静态快照. 知识点: 统一建模语言 (UML) 问题 ...

最新文章

  1. NCBI SRA数据库使用详解
  2. 一个easyui的案例(SSH)
  3. SDNU 1085.爬楼梯再加强版(矩阵快速幂)
  4. 牛客练习赛 57——manacher算法 树形dp?
  5. TCP面向连接中的“连接”和“可靠”与“不可靠”
  6. 2017.10.13 轮状病毒 失败总结
  7. 环,模,补码,负数的表示与减法实现
  8. java自定义findbugs规则,定制 findbugs规则 - 阿里巴巴一个测试架构师 - 51Testing软件测试网 51Testing软件测试网-软件测试人的精神家园...
  9. 使用Hyperlegder Fabric体验区块链智能合约的乐趣----编写一个简单的BookstoreApp(上)...
  10. VBA教程初级(一):简单宏
  11. HBase安装配置及测试
  12. PCWorld:IT界14对经典“生死冤家”
  13. css实现背景图片透明内容不透明
  14. 产品经理的职责都有哪些
  15. 程序员赚零钱食用指南
  16. push进队列的C2075错误
  17. 稀疏表示 河流多元信息处理 matlab
  18. 一行Python能实现什么丧心病狂的功能?
  19. 再看 AspriseOCR - OCR应用开发
  20. 一天学会MYSQL数据库_笔记

热门文章

  1. 联想高校AI精英挑战赛中大收官,“人工智能眼科机器人”获全国总决赛最后入场券
  2. 对话陆奇:用产品思维变革百度工程师文化,欣赏腾讯内部赛马机制
  3. js逆向解析技巧--selenium
  4. [Manifest]关于icon
  5. 阿里、京东、美团、百度面试总结
  6. Linux系统下如何实现文件系统配额
  7. Kali Linux渗透基础知识整理(四):维持访问
  8. ndk android studio万年坑
  9. it'll be much more productive to read pdf files via a touch screen
  10. 本机找不到workstation 和 Computer Browser服务