assert.h

✍ dations ◷ 2025-12-01 01:36:32 #

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

相关

  • 另见内文貂属(学名 Martes)是食肉目鼬科动物中的一属。大部分貂属动物都居住在树上,以松鼠为食,它们的食物还包括小鸟和蛋。貂在中国主要产于东北地区,有多个品种。
  • 帕妥珠单抗帕妥珠单抗(Pertuzumab,也被称作2C4,商品名Perjeta)是一种单克隆抗体。它是第一个被称作“HER二聚化抑制剂”的单克隆抗体。通过结合HER2,阻滞了HER2与其它HER受体的杂二聚,从而减
  • 蒙古国死刑制度蒙古国曾经是世界上58个仍保存死刑制度的国家之一,执行方式为枪毙头部。5种可执行死刑的罪名为:出于政治目的所犯下的恐怖行为;出于政治目的而对外国使节进行攻击;情节严重的破
  • 放县维尔扬迪县 (Viljandi maakond,或称Viljandimaa)是爱沙尼亚南部的一个县,南邻拉脱维亚。面积3,422平方公里。2004年人口为56,854人。首府维尔扬迪。下分三市十二镇。
  • 森尼韦尔坐标:37°22′19″N 122°1′34″W / 37.37194°N 122.02611°W / 37.37194; -122.02611森尼韦尔(英文:Sunnyvale)是美国加利福尼亚州圣克拉拉县内的一座城市,位于旧金山湾区的南
  • 西北角坐标:49°23′4.1″N 95°09′12.2″W / 49.384472°N 95.153389°W / 49.384472; -95.153389西北角(Northwest Angle)位处于明尼苏达州的伍兹湖县(Lake of the Woods County)北
  • 马可·奥勒留马可·奥勒留(拉丁语:Marcus Aurelius,121年4月26日-180年3月17日),全名为马可·奥勒留·安敦宁·奥古斯都(拉丁语:Marcus Aurelius Antoninus Augustus)。是罗马帝国五贤帝时代最后
  • 临潼区临潼区是陕西省西安市的一个区,是西安市最东边的一个区,位于渭河平原中部,距西安市区26公里。东接渭南市,南接西安市蓝田县,西接西安市灞桥区、西安市高陵县、咸阳市三原县,北接西
  • 奇特的地名奇特的地名是指某一地区的地名在某些方面被认为是非常规的。如该地地名中含有不雅单词、不经意的幽默,又或者是过长或过短的地名,都可以被认定是奇特的地名。
  • 李继峣李继峣,后唐庄宗李存勖第五子,生母不详。同光三年二月十八辛巳(925年3月15日),唐庄宗李存勖下诏命令,皇子李继潼、李继嵩、李继蟾、李继峣为光禄大夫、检校司徒。因为他们都年幼,都