这是C语言的assert.h头文件的定义

#include "cvidef.h"
#include "cvirte.h"                                                               #ifndef _ASSERT_H_
#define _ASSERT_H_                                                                #ifdef __cplusplus                                                                extern "C" {
#endif                                                                            #undef assert                                                                     #ifdef NDEBUG
#define assert(exp) ((void)  0)                                                   #else
void CVIANSI _assert(char *, char *, int);                                        #define assert(exp) ((exp) ? (void) 0 : _assert(#exp, __FILE__, __LINE__))
#endif                                                                            #ifdef __cplusplus                                                                }
#endif                                                                            #endif /* _ASSERT_H_ */

关键是看 这句

#define assert(exp) ((exp) ? (void) 0 : _assert(#exp, __FILE__, __LINE__))

1,如果 exp为真,则返回0,不进行任何操作。
2,如果exp为假,则调用_assert(#exp, __FILE__, __LINE__)

_assert(#exp, __FILE__, __LINE__) 

就是打印 assert断言的内容: 主要是 exp的字符串, 当前文件的名字, 当前行数。

具体例子如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<assert.h>#define DEBUG
//#undef DEBUG/**
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include <assert.h>
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,
*/void main(){#ifdef DEBUGprintf("rong\n");
#endiffprintf(stderr,"error\n");assert(1);int a = 1;assert(a == 1);}

编译与运行:

当assert()内为真时:

-bash-4.1$ gcc -o a Demo.c
-bash-4.1$ ./a
rong
error
-bash-4.1$ 

当assert()内为假时:

-bash-4.1$ gcc -o a Demo.c
-bash-4.1$ ./a
rong
error
a: Demo.c:24: main: Assertion `0' failed.
已放弃 (core dumped)
-bash-4.1$

C语言assert关键字相关推荐

  1. Java assert关键字

    一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,assert关键字是从JAVA SE 1 ...

  2. java assert语句未执行_Java陷阱之assert关键字

    转自:http://lavasoft.blog.51cto.com/62575/43735/ Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java ...

  3. java assert函数_assert函数-论java中assert函数和Python、PHP、C语言assert函数

    assert函数广泛在java.Python.PHP.C语言中存在,都有统一的意义,用业界语言称之为"断言".最初的出发点都是为了方便调试而设计的,但是最近越来越多的开发者不分测试 ...

  4. java assert false_Java陷阱之assert关键字

    Java陷阱之assert关键字 一.概述 在C和C++语言中都有assert关键,表示断言. 在Java中,同样也有assert关键字,表示断言,用法和含义都差不多. 二.语法 在Java中,ass ...

  5. Java语言的关键字

    Abstract 抽象的 一个Java语言中的关键字,用在类的声明中来指明一个类是不能被实例化的,但是可以被其它类继承.一个抽象类可以使用抽象方法,抽象方法不需要实现,但是需要在子类中被实现 brea ...

  6. 返回语句C语言return关键字

    时间紧张,先记一笔,后续优化与完善. C语言return关键字 return 用来终止一个函数并返回其前面跟着的值,绝对很简单. return (Val)://此括号可以省略.但一般不省略,尤其在返回 ...

  7. C语言的关键字 extern

    该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处 本文章博客地址:https://cplusplus.blog.csdn.net/article/details/105112033 C ...

  8. c语言中switch语句流程图_C语言:C语言保留字(关键字)

    保留字(reserved word) 保留字又称关键字. 指在高级语言中已经定义过的字,使用者不能再将这些字作为变量名或过程名使用. 每种程序设计语言都规定了自己的一套保留字. 例如:BASIC语言规 ...

  9. C语言register关键字——最快的关键字

    C语言register关键字-最快的关键字 (2012-08-24 14:09:24) 转载▼ 标签: 杂谈 分类: C/C    register:这个关键字请求编译器尽可能的将变量存在CPU内部寄 ...

最新文章

  1. 2022-2028年中国地沟油制生物柴油行业市场研究及前瞻分析报告
  2. VS2005在编译项目时找不到Ceplatform和PLATFORMDEFINE变量
  3. linux chmod和fchmod设置 文件和目录权限设置
  4. icmp的回送和回送响应消息_领导送我1盒茶叶,我悟出了3点道理,可能还有一群人不明白...
  5. mysql序列号发生器
  6. 20张图表达程序员的心酸
  7. MyEclipse 10.5 安装SVN插件
  8. git fork clone 区别_Working with Git | Git 与 GitHub
  9. TOP命令监视系统任务及掩码umask的作用
  10. 项上的温柔,冬季围巾8大打法图解(组图)
  11. 5 多数据save_5个高质量行业数据报告资源下载地方,自己想一下有多重要吧
  12. Python基础函数学习笔记(二)
  13. 推荐几款MySQL图形化客户端管理工具
  14. 揭穿内存厂家“谎言”,实测内存带宽真实表现
  15. 苹果亮度自动调节怎么关闭_笔记本黑苹果系统亮度调节驱动
  16. java算法编程题:计算球的体积
  17. 那些年,Java程序员用过的开发工具
  18. 福建省2021高考成绩如何查询,2021福建省地区高考成绩排名查询,福建省高考各高中成绩喜报榜单...
  19. 奈何桥上经过的地方,看醒了多少人
  20. soul源码阅读 启动soul应用

热门文章

  1. pytorch,cuda8,torch.cuda.is_available return flase (ubuntu14)
  2. python学习之路(17)
  3. SpringCloud注解和配置以及pom依赖说明
  4. [第二届构建之法论坛] 预培训文档(C++版)
  5. Javascript的websocket的使用方法
  6. DBCC--SHRINKDATABASE
  7. (转载)UI设计还远没有满足客户的需求
  8. 事务例子_Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现...
  9. python启动http服务_Python通过命令开启http.server服务器的方法
  10. oppo手机维语字体_老年人上网困难重重?学会OPPO这几个功能无后顾之忧