assert.h

✍ dations ◷ 2025-12-09 09:19:25 #

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

相关

  • 葡萄球菌葡萄球菌(学名:Staphylococcus)是一群革兰氏染色阳性球菌,因常常堆聚成葡萄串状而得名。广泛分布于自然界及人和动物的皮肤及与外界相通的腔道中。大部分是不致病的腐生菌。医务
  • 卷柏目卷柏(Selaginella),为石松门卷柏属的植物,属下约有700种卷柏,例子有二形卷柏、单子卷柏。如其他石松门植物,卷柏的叶子是只有一根叶脉的小型叶(microphylle),并以孢子作有性繁殖。江
  • 专利家族专利家族( Patent Family )包括狭义与广义两种。狭义的专利家族,系指一件专利在不同国家申请的集合,例如我们先在美国申请一件专利,之后判断相关技术或是产品可能行销到日本、欧
  • 池田菊苗池田菊苗(1864年10月8日-1936年5月3日),日本化学家。1864年出生于京都,曾留学欧洲,东京帝国大学教授。1908年,他发现海带的味道源自谷氨酸钠,谷氨酸盐能产生鲜味的感觉。其后他取得
  • 白矮星白矮星(white dwarf),也称为简并矮星,是由简并态物质构成的致密天体。它们的密度极高,一颗质量与太阳相当的白矮星体积只有地球一般的大小,微弱的光度则来自过去储存的热能。在太
  • 北京周报《北京周报》(英语:Beijing Review)是中华人民共和国的一份官方英文周刊,由中国外文出版发行事业局管理,北京周报社出版。《北京周报》创刊于1958年3月,最初英文名为“Peking Revi
  • LVTP-5装甲车LVTP- 5(LVTP是Landing Vehicle Track Personnel的缩写,其意义为登陆车辆,履带,人员)是美国海军陆战队使用的一系列两栖登陆履带装甲车辆。它是由博格华纳公司(Borg Warner Compan
  • 罗马执政官执政官(拉丁语:consul,缩写为)是罗马共和国透过选举产生的最高的职务,而在罗马帝国是委任的职务。在拉丁语中,的意思是“那些走在一起的人”。执政官的职务,被认为可以追溯至公元前
  • 乔治·夏帕克乔治·夏帕克(法语:Georges Charpak,1924年3月8日-2010年9月29日),法国物理学家,1992年诺贝尔物理学奖获奖者。乔治·夏帕克出生在波兰东部的一个犹太人隔离区,7岁随父母移居法国。
  • 文达语文达语(Venda),温达语,亦称Tshivenḓa,或Luvenḓa,属于班图语支,也是南非的官方语言之一。文达语主要的使用者分布在南非,不过另有一些使用者散布在津巴布韦。在南非种族隔离时期,所