assert.h

✍ dations ◷ 2025-11-30 01:22:53 #

assert.h是C标准函数库中的头文件。其中定义了assert()宏用于程序调试。

在C标准函数库中,它是个非常特别的头文件,你可以将它引入数次以获得不同的效果,此效果依引入时是否以定义NDEBUG而定。

assert()是一个诊断宏,用于动态辨识程序的逻辑错误条件。其原型是:void assert(int expression);

如果宏的参数求值结果为非零值,则不做任何操作(no action);如果是零值,用宽字符打印诊断消息,然后调用abort()。诊断消息包括:

诊断信息的显示目标依赖于被调用程序的类型。如果是控制台程序,诊断信息显示在stderr设备;如果是基于窗口的程序,assert()产生一个Windows MessageBox来显示诊断信息。

程序可以屏蔽掉所有的assert()而无需修改源代码。这只需要在命令行调用C语言的编译器时添加宏定义的命令行选项,定义NDEBUG宏;也可以在源程序程序引入<assert.h>之前就使用#define NDEBUG来定义宏。被屏蔽的assert()甚至不对传递给它的参数表达式求值,因此使用assert()时其参数表达式不能有副作用(side-effects)。

相关

  • 眼球眼(亦称眼睛、目、目睭)是视觉的器官,可以感知光线,转换为神经中电化学的脉冲。比较复杂的眼睛是一个光学系统,可以收集周遭环境的光线,借由虹膜调整进入眼睛的强度,利用可调整的晶
  • 气炸锅气炸锅(英语:Air fryer)为一种电子炊具,是对流恒温烤箱(英语:Convection oven)的缩小版。原始专利由Turbochef Technologies于2005年申请,主要针对大型连锁酒店和饮食店。2010年,飞利
  • 伊里奥特弗一世因提夫一世(Intef I)是古埃及第一中间期第十一王朝的一位法老,他是该王朝最早使用法老这个头衔的统治者。他的统治时间是从约公元前2115年至约公元前2103年。他的荷鲁斯式是塞
  • 中华民国客家委员会客家委员会(简称客委会)为中华民国有关客家族群事务的最高主管机关,成立于2001年6月,其目标是复兴台湾日渐流失的客家文化,延续客家传统文化命脉,并打造台湾成为一个尊重多元族群
  • UML统一建模语言(英语:Unified Modeling Language,缩写 UML)是非专利的第三代建模和规约语言。UML是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件
  • Aspidosperma见文中白坚木属是开花植物夹竹桃科中的一属,包含物种如下:
  • 鸟龙鸟科鸟龙鸟科(学名:Avisauridae)是白垩纪时期北美洲及南美洲的一科反鸟亚纲鸟类,其下有8个属。鸟龙鸟科是于1985年成立,包含了一些最初被认为是细小兽脚亚目恐龙的化石。路易斯·恰佩
  • 阿克斯布里奇 (马萨诸塞州)阿克斯布里奇(英语:Uxbridge)是美国马萨诸塞州乌斯特县的一个小镇,人口13,247,坐落在黑石河谷的中心。这里曾是美国工业化的发祥地,也是1756年美国殖民地时期第一个女性选民,Lydia
  • 哈比卜·努尔马格妙多夫哈比卜·努尔马格妙多夫全名哈比卜·阿卜杜勒马纳波维奇·努尔马格妙多夫(俄语: Хабиб Абдулманапович Нурмагомедов。英语:Khabib Abdulmanap
  • 伊多语伊多语(Ido)是以世界语为基础,针对其缺点再行改良的另一个人造语言,于1900年代发展出来,至今仍有一群为数不多的跟随者,主要使用人口分布于欧洲。伊多语沿用了世界语的许多特征,