assert.h

✍ dations ◷ 2025-12-05 00:31:18 #

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

相关

  • 松乳菇松乳菇(学名:Lactarius deliciosus),又名美味松乳菇、松树蘑、松菌、重阳菌等,是乳菇属中最常见的大型蘑菇之一。原产欧洲和北美洲,现已随着松树传入其他区域,可见于松树种植园。在
  • 严重过敏反应过敏性休克(英语:Anaphylaxis)反应系指一种严重的全身性过敏反应,发病极快且具有致命性。通常会伴随以下症状:起痒疹、舌头或咽喉肿胀、呼吸困难、呕吐、头晕及低血压;以上症状往
  • 语义元语义元,或称语义素,是在先天上能够直接理解而无法以更简化的用词来表述的一组语义的概念。语义元能够表述透过后天习得,但不能被具体定义的单词或短语。 例如,英语 "touch" 最直
  • 巴西中央银行巴西中央银行(葡萄牙语:Banco Central do Brasil)是巴西的最高金融管理局、政府的金融和经济机构。它于1964年12月31日成立。中央银行和巴西财务厅相互协作。如同其他中央银行,
  • 白色革命白色革命(波斯语:انقلاب سفید‎,Enghelāb-e Sefid)是一系列由伊朗末代国王穆罕默德·礼萨·巴列维在1963年发起的意义深远的改革。国王有意通过此次经济与社会的改革
  • 旋转曲面旋转曲面是一个平面曲线绕着一条直线(旋转轴)旋转所得到的曲面。例子包括球面,由圆绕着其直径旋转而成,以及环面,由圆绕着外面的一条直线旋转而成。如果曲线由参数方程
  • 眼泪的秘密《眼泪的秘密》(英语:The Secret of Tears)是吴若希的第五张专辑,于2016年1月21日推出。此专辑收录了11首歌曲,随碟附送4款Postcard。当中主打歌曲《眼泪的秘密》为吴若希于本地
  • 中情局对舆论的影响在各种情况下,美国中央情报局都可依据其自身权利或遵从总统或国家安全委员会成员的指令,试图对国内外舆论甚至执法活动施加影响。本文讨论的内容不包括涉嫌违法的国内监视活动
  • 兴京新宾满族自治县,是辽宁省抚顺市下辖的一个自治县,总面积4432平方千米。地处长白山脉。年均降水量769.6毫米,年均温4.7℃。矿藏有煤炭、金、银、铜、铅等。下辖10个镇、10个乡:新
  • 社交软件社交软件,或作社会性软件、社群性软件,是指任何支持群体交流的软件。推动社会性软件发展的原动力明显区别于传统的交互过程。社会性软件指的是网络上的一些软件,这些软件让用户