assert.h

✍ dations ◷ 2025-11-25 17:15:50 #

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

相关

  • 烟雾烟雾(英语:smog)是一种空气污染现象。这个词的原意是指在英国伦敦有时别称“豌豆汤雾(英语:Pea soup fog)”的烟霞,是伦敦从19世纪到20世纪中期的严重问题。这种烟雾是在城市内燃烧
  • 法兰西学院法兰西学术院(法语:Académie française)是法国的一所学术机构,是法兰西学会下属的五个学术院之一,是五个学术院中历史最悠久、名气最大的学术权威机构,当选法兰西学院院士是极高
  • 有虞氏,又称虞朝,是中国历史上一个可能存在过数百年的王朝,在夏朝之前。虞朝位于今山西平陆西南,舜是虞朝的最后一位君主。在《左传》、《国语》中,虞夏商周四代连称的文句不胜枚
  • 配克配克(英语:peck)是英制容量单位。1配克相当于2干量加仑或8干量夸脱。在美国,配克已不被广泛使用,但在计量苹果等农产品时仍然会被用到。英制单位:1 英制配克 = ¼ 英制蒲式耳 = 2
  • 萨姆纳堡之役桑特堡战役是南北战争中一场于1861年4月12日至13日发生在南卡罗来纳州查尔斯顿港的萨姆特堡,全无伤亡且不太重要的战役,但正因为此役才令林肯决定向南方宣战,南北战争因此爆发
  • 樟树市樟树市位于江西省中部,鄱阳湖平原的南缘,是隶属于宜春市的一个县级市。南唐升元二年(公元938年),析高安之建安、修德,新淦之崇学三乡置清江县,治潇滩镇(今临江镇)。北宋淳化三年(公元9
  • 采石站采石站是位于安徽省马鞍山市雨山区采石唐贤街的一个铁路车站,邮政编码243041。车站建于1936年,有宁铜铁路经过该站,现不办理客货运业务。车站设有1条正线和2条到发线,站场及其上
  • LGBT用语LGBT用语(英语:LGBT slang)是指LGBT人群主要使用的俚语。在多种不同语言中均有LGBT用语,以便于LGBT人群能够认知彼此。LGBT用语同时也有暗语的功能,起到不暴露使用者性取向的作用
  • 信实通信信实通信(Reliance Communications, BSE: 532712),信实工业一部分,原名“信实信息通信”(Reliance Infocomm)与信实电信(Reliance Telecom)及Flag Telecom,都是信实通信投资(Reliance C
  • 供认供认,又称坦白,是指在刑事证据法律中,犯罪嫌疑人做出对自己不利的陈述。包括《布莱克法律词典(英语:Black's Law Dictionary)》等次要机构则为供认做出较狭隘的界定,例如“承认或交