assert.h

✍ dations ◷ 2025-12-08 14:29:08 #

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

相关

  • 让·拉辛让·拉辛(法语:Jean Racine,1639年12月22日-1699年4月21日),法国剧作家,与高乃依和莫里哀合称十七世纪最伟大的三位法国剧作家。拉辛出身于一个小官员家庭,自幼父母双亡,被外祖母和舅
  • 托勒密十五世托勒密十五世·菲洛帕托尔·菲洛墨托尔·恺撒(希腊语:Πτολεμαίος ΙΕ' Φιλοπάτωρ Φιλομήτωρ Καίσαρ,拉丁化:Ptolemaíos XV Philopátōr P
  • 砂眼披衣菌砂眼衣原体(Chlamydia trachomatis,披衣菌)是一种绝对寄生病原体,披衣菌是一种在构造上介于细菌和病毒之间的微生物。以往被认为是一种病毒,但因其同时含有 DNA 和 RNA、并有和革
  • 土生华人峇峇娘惹(马来语:Baba Nyonya或者Peranakan),又称土生华人或海峡华人,是指15世纪初期到17世纪之间开始定居在马六甲、印尼、新加坡、泰国和缅甸一带的中国明代、清代移民后裔。这
  • 立方垓米体积(英语:Volume)是物件占有多少空间的量。体积的国际单位制是立方米。一件固体物件的体积是一个数值用以形容该物件在空间所占有的空间。一维空间物件(如线)及二维空间物件(如正
  • 古希腊重装步兵希腊重装步兵(希腊语:ὁπλίται,hoplitai),是古希腊城邦的公民士兵,他们主要使用长枪并以密集方阵作战,其字源古希腊语ὁπλίται,是从.mw-parser-output .Polytonic{font-
  • 始暴龙属始暴龙属(属名:,意为“黎明暴君”,即“早期暴龙”)是暴龙超科下的一属恐龙,化石从英国怀特岛郡的韦尔登群的威塞克斯组发现,年代为下白垩纪。它的化石(编号MIWG1997.550)包括了幼体及
  • 中国空间站中国空间站概括指中华人民共和国计划中的一个空间站系统。最终目标是在低地轨道由中国大陆自主建设成的一个常驻的60至180吨级的大型空间站。该计划分两个阶段进行。试验阶
  • 充电充电是给蓄电池等设备补充电量的过程。其原理是让直流电从放电相反的方向通过,以使蓄电池中活性物质恢复作用。它有引申义比如学习,工作等。向电池充电的方式视电池的种类而定
  • 牙本质唾液酸磷酸蛋白牙本质唾液酸磷酸蛋白(Dentin sialophosphoprotein,DSPP)是唯一由成牙本质细胞产生的蛋白质,它是一种SIBLING蛋白,属于非胶原蛋白,后来被切割成三种功能性蛋白:即取自羟基末端的牙