assert.h

✍ dations ◷ 2024-12-22 23:23:40 #

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

相关

  • 中国水资源水资源总量为降水形成的地表和地下产水量,即地表产水量与降水入渗补给地下水量之和。由两部分组成:第一部分为河川径流量,即地表水资源量;第二部分为降水入渗补给的地下水量,即地
  • 异戊巴比妥异戊巴比妥(Amobarbital或Amylobarbitone)是一种巴比妥类药物的衍生物,主要的功能是用于作为中效镇静剂,以治疗如失眠之类的症状。 除了作为药物之外,异戊巴比妥也因为其中枢神经
  • 爱德华·泰勒爱德华·泰勒(英语:Edward Teller,原匈牙利名为Teller Ede,1908年1月15日-2003年9月9日),出生于匈牙利的犹太裔理论物理学家,被誉为“氢弹之父”(见泰勒-乌拉姆构型),但他本人并不喜欢
  • 主流新教主流新教(mainline Protestant,或 mainstream Protestant、oldline Protestant),是指美国的一些新教教会。这些教会大多持自由主义神学立场,和福音派、基要派新教教会相对,现有210
  • 土地银行台湾土地银行股份有限公司,简称土地银行、土银,是中华民国一家成立于1946年的大型银行,为传统八大行库之一,资产在中华民国本国银行排名第五。总行位于台北市馆前路上,系改组日治
  • 依数性依数性(Colligative Property)是指溶液所具有的一类性质,这类性质只取决于溶质在溶剂中的“粒子”数量,而与溶质的本性无关。溶液的依数性包括:溶剂蒸气压的降低导致溶液凝固点下
  • 19631963年欧洲歌唱大赛(英语:Eurovision Song Contest Grand Prix 1963)为欧洲歌唱大赛之第八届比赛,于1963年3月23日在英国伦敦举行,法国于去年赢得冠军,但其才刚于1961年举办完一场
  • C·S·刘易斯克利夫·斯特普尔斯·刘易斯(英语:Clive Staples Lewis,1898年11月29日-1963年11月22日),通称C·S·刘易斯(C.S. Lewis)或 鲁益师,其朋友及家人昵称他为杰克(Jack),出生于北爱尔兰首府贝
  • 东京玫瑰 (专辑)《东京玫瑰》(Tokyo Rose),是1989年美国音乐家凡·戴克·帕克斯(英语:Van Dyke Parks)的专辑。此专辑关注了日美文化间的交集点,此点在1980年代那激烈的“贸易战”中尤为突出。此二
  • 瓦赫兰瓦赫兰(阿拉伯语:وهران‎,转写:Wahrān;柏柏尔语:ⵡⴰⵀⵔⴻⵏ)又名奥兰(法语:Oran),位于阿尔及利亚西北部地中海沿岸,是该国第二大城市,也是奥兰省省会,市内人口759,645(2008年),都会区