assert.h

✍ dations ◷ 2025-11-28 03:10:22 #

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

相关

  • 有胚植物有胚植物,又称为高等植物,是那些最熟悉的植物,包括苔藓植物门、地钱纲、角苔纲、蕨类、石松、裸子植物、开花植物等,但不包括绿藻。有胚植物都是具有专门的生殖器官的复杂多细胞
  • 卡尔文循环卡尔文循环(英语:Calvin cycle,或简称卡氏循环,又译作开尔文循环)是由美国加州大学伯克利分校梅尔文·卡尔文、安德鲁·本森和詹姆士·巴沙姆 3 人发现。梅尔文·卡尔文于1961年
  • 莫尔比昂省莫尔比昂省(法语:Morbihan,法语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentiu
  • 贾耽贾耽(730年-805年10月27日),字敦诗,沧州南皮(今河北省沧州市南皮县)人。中国唐朝官员,仕至尚书左仆射、知政事。博学好古,尤以精通地理学著称于世。耽天宝十年(751年)以明经及第,乾元中
  • 朱鹮朱鹮(学名:Nipponia nippon),又名朱鹭、鹮、日本凤头鹮、红鹤、朱脸鹮鹭。根据2014年统计,朱鹮数量现在2000多只,其中野生朱鹮1000只左右。与大部分鹭科鸟类相似,朱鹮的栖息地和取
  • 头部移植头部移植,是一种外科手术,其目的是将一个人或其他动物的头部嫁接到另一个的身体上。头部移植曾经在狗、猴子、老鼠等动物上做过实验,但目前尚无在人类应用的记录。由于重新联接
  • 卓宁霍姆宫卓宁霍姆宫(瑞典语:Drottningholms slott,又译德罗特宁霍尔姆宫、德罗汀罕皇宫 、王后岛宫)是瑞典王室的私人宫殿,位于斯德哥尔摩省、梅拉伦湖畔埃克尔市卓宁霍姆(王后岛)。该建筑
  • MADS盒MADS盒蛋白(英语:MADS-box)基因是一大类与高等植物花器发育有关的调控基因,具有同源异形框基因的功能。MADS的命名由四个基因的第一个第1个字母组合而成,即酵母MCMI,拟南芥(Arabido
  • 波兰家乡军波兰救国军(波兰语:Armia Krajowa)是第二次世界大战于纳粹德国占领下进行抵抗运动的一支波兰军队,1942年2月从反抗组织(英语:Polish resistance movement in World War II)“武装斗
  • 巨济岛巨济岛(朝鲜语:거제도/巨濟島 Geoje do */?),大韩民国东南部庆尚南道巨济市的主岛,面积383.44平方公里,是该国第二大岛屿。巨济岛的北面是镇海湾,南面是朝鲜海峡,东面是韩国东海。