assert()是C语言标准库中提供的一个通用预处理器宏。在代码中常利用assert()来判断一个必需的前提条件,以便程序能够正确执行。例如,假定我们要读入一个文本文件,并对其中的词进行排序,必需的前提条件是文件名已经提供给我们了,这样我们才能打开这个文件。为了使用assert(),必须包含与之相关联的头文件:
#include <assert.h>

下面是一个简单的使用示例:

assert( filename != 0 );

assert()将测试filename 不等于0的条件是否满足。这表示,为了后面的程序能够正确执行,我们必须断言一个必需的前提条件。如果这个条件为假(即filename 等于0),断言失败,则程序将输出诊断消息,然后终止。

------------------------------------------------------------------------------------
assert.h 是C 库头文件的C,名字C++程序可以通过C库的C名字或C++名字来使用它。这个头文件的C++名字是cassert。C库头文件的C++名字总是以字母C开头,后面是去掉后缀.h的C名字、(由于在各种C++实现中,头文件的后缀各不相同,因此标准C++头文件没有指定后缀。)使用头文件的C名字,或者C++名字,两种情况下头文件的#include预处理器指示符的效果也会不同。下面的#include 指示符:
#include <cassert>

将cassert 的内容被读入到我们的文本文件中。但是由于所有的C++库名字是在名字空间std 中被定义的,因而在我们的程序文本文件中,它们是不可见的,除非用下面的using 指示符显式地使其可见:

using namespace std;

使用C 头文件的#include 指示符:

#include <assert.h>

就可以直接在程序文本文件中使用名字assert(),而无需使用using指示符。

库文件厂商用名字空间来控制全局名字空间污染(即名字冲突)问题,以避免它们的库“污染”了用户程序的名字空间。

通用预处理器宏assert()的用法相关推荐

  1. define定义的函数如何引用_「C与指针心得」25.预处理器-宏函数

    感谢您的阅读与点赞!欢迎关注:「大猫玩程序」,查看C语言系列文章 上一节讲了一些系统的预定义宏,这一节来讲一讲 宏定义.宏函数. 预处理常量 define: 预处理器指令从#开始,到最后第一个换行符为 ...

  2. error C4668: 没有将“_WIN32_WINNT_WIN10_TH2”定义为预处理器宏,用“0”替换“#if/#elif”

    一般为Windows中的宏和UE4冲突所致,需要用如下头文件包裹冲突的头文件: #include "Windows/AllowWindowsPlatformTypes.h" #in ...

  3. iOS项目预处理器环境变量设置

    preprocessor macro 预处理器宏 1.系统默认有两个预处理器环境,一个是DEBUG 一个是 RELEASE 都是大写. 2. 测试环境为0 可以进行log日志打印等  测试环境内存分配 ...

  4. python预处理c语言_详解C语言编程中预处理器的用法

    预处理最大的标志便是大写,虽然这不是标准,但请你在使用的时候大写,为了自己,也为了后人. 预处理器在一般看来,用得最多的还是宏,这里总结一下预处理器的用法. #include #define MACR ...

  5. C 语言编程 — 宏定义与预处理器指令

    目录 文章目录 目录 前文列表 宏 预处理器 预处理器指令 预处理器指令示例 预处理器指令运算符 宏定义 简单宏定义 带参数的宏定义 符号吞噬问题 使用 do{}while(0) 结构 预定义的宏 常 ...

  6. C语言的预处理器无法先展开宏再拼接符号?可以!

    背景 最近接到一个需求,要实现一个脚本,能提取.h文件里定义的所有全局变量的值,这些全局变量都是结构体变量,名字是结构体类型名加场景后缀--每个.h对应的场景都是唯一的,所以.h内所有变量名的后缀一致 ...

  7. html引入stylus,css预处理器stylus基本用法

    css预处理器有Less.Sass(Scss)及Stylus:它们各自的背景如下: Sass:2007年诞生,最早也是最成熟的CSS预处理器,拥有ruby社区的支持和compass这一最强大的css框 ...

  8. C 预处理器 —— __DATE__ # __TIME__ # __FILE__ # __LINE__ # __STDC__ (预处理宏的使用 —— 打印debug信息:)

    预定义宏: ANSI C 定义了许多宏.在编程中您可以使用这些宏,但是不能直接修改这些预定义的宏. 宏    描述 __DATE__    当前日期,一个以 "MMM DD YYYY&quo ...

  9. 《C Primer Plus》第十六章——C预处理器和C库

    文章目录 C预处理器和C库 本章内容 翻译程序的第一步 明示常量:#define 记号 重定义常量 在#define中使用参数 用宏参数创建字符串:#运算符 预处理器黏合剂:##运算符 变参宏:... ...

  10. C | C预处理器和C库

    目录 一.翻译程序的第一步 二.明示常量:#define 2.1 记号 2.2 重定义常量 三.在#define中使用参数 3.1 用宏参数创建字符串:#运算符 3.2 预处理器黏合剂:##运算符 3 ...

最新文章

  1. Docker的安装和使用说明——Docker for Windows
  2. Oracle数据库迁移后变慢,迁移数据之后,读取数据库变得很慢
  3. excel单元格下拉菜单
  4. eclipse和myeclipse的差别问题
  5. 初识生成器与生成器表达式 Day12
  6. MySQL中外键定义级展现结果_MySQL高频面试60题含答案
  7. Android TTS实现简单阅读器
  8. 小D课堂 - 零基础入门SpringBoot2.X到实战_第8节 数据库操作之整合Mybaties和事务讲解_36、SpringBoot整合mybatis之事务处理实战...
  9. win7系统怎么设置sql服务器,win7系统怎么安装sqlserver2000软件(图文)
  10. 谷歌Keras之父连发两文解析深度学习的局限性与未来
  11. 国网B接口调阅实时视频(INVITE)接口描述和消息示例
  12. Linux内核网络编程
  13. TFTP 简单文件传输协议 简介
  14. 小米手机助手linux,小米手机助手怎么用?小米手机助手教程
  15. python加减乘除_python加减乘除
  16. 开发过程中沟通的重要性
  17. 学术派 |用深度学习实现2D到3D的转换
  18. gensim简单使用
  19. 如何禁止win7自动锁屏
  20. 使用 Prometheus-Operator 监控 Calico

热门文章

  1. java hibernate 插入数据_hibernate 批量插入数据
  2. 概率论----假设检验
  3. 字符串匹配---KMP
  4. 导入图片后截取_如何截取视频片段?这几个方法比专业剪辑软件还好用!
  5. linux开机启动服务,Linux开机启动服务
  6. java定时执行bat_如何自动执行多个批处理命令
  7. git flow命令
  8. 5个衡量软件质量的标准(可自动化)
  9. 将List按照指定大小等分的几种实现方式和效率对比及优化
  10. Tomcat JMX