assert.h

✍ dations ◷ 2025-05-19 16:49:45 #

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)。

相关

  • CNa有机钠化学是研究含有碳-钠键的金属有机化合物(即有机钠化合物)化学的学科。 有机钠化合物的应用因为与有机锂化合物(同样位于元素周期表IA族)竞争而收到部分限制。尽管如此仍存
  • 民用航空民用航空(简称民航)是指军事、公务(例如警务、海关)用途以外的航空服务,包括私人或商业性质的飞行。又可分为公共航空运输、通用航空。世界上大多数国家都是国际民航组织(ICAO)成员
  • 剑术剑术是指以剑进行格斗的技术。虽然很早就有使用剑的历史,但是剑术作为一门战斗技巧被整理和流传下来很晚。这个时期养士风气很浓,许多宾客都是剑术高手剑客,诸如越女、专诸、荆
  • 华通氏胶华通氏胶(Wharton's Jelly)为构成脐带的凝胶状物质,主要成分是黏多糖(Mucopolysaccharides),也含有成纤维细胞和巨噬细胞,是一种黏膜组织。当婴儿分娩后,温度的改变使华通氏胶内部的
  • 床边检测床边血糖检测 (又称即时血糖检测),实质是将用于自我血糖监测(SMBG)的设备和方法应用到院内床边。是一种测量血糖水平的方法。POCT测量血糖的便于及时诊断,可用于紧急情况。在急
  • 东部裕固语东部裕固语是中国甘肃省张掖市肃南裕固族自治县东部,康乐区、皇城区、大河区和马蹄区等地的裕固族所用的语言,属于阿尔泰语系蒙古语族东蒙古语支。语言上接近康家语、土族语、
  • 爪哇海爪哇海战役(英语:Battle of the Java Sea)发生于1942年2月27日,是第二次世界大战期间日军为占领荷属东印度(今印度尼西亚)而进行的一场海上战役。由荷兰、美国、英国和澳洲舰只组
  • 福尔摩沙远征福尔摩沙远征(英语:Formosa Expedition),又称1867年台湾远征,是美国针对福尔摩沙(也就是今日的台湾)的一次“报复性远征”。远征因罗妹号事件而引起。三桅帆船罗妹号在台湾海岸搁浅
  • 草酸钠草酸钠(Na2C2O4)为草酸的钠盐,是一种还原剂,也常作为双齿配体。中和后以大量清水稀释排放氧化还原滴定时可作为标定高锰酸钾溶液的基准物质。可移除Ca2+,可用于验硬水或生物学上
  • 前列腺素F2α 前列腺素 F2α (在前列腺素的命名中为PGF2α),其药学上称为地诺前列素(INN),它在医学上的用途是作为天然的前列腺素用于引产和堕胎药。在哺乳动物中,它是由子宫受刺激时产生