ASSERT - Linux手册页

时间:2019-08-20 17:59:53  来源:igfitidea点击:

Linux程序员手册 第3部分
更新日期: 2017-09-15

名称

assert-如果断言为假,则中止程序

语法

#include <assert.h>

void assert(scalar expression);

说明

该宏可以帮助程序员发现程序中的错误,或通过崩溃处理异常情况,崩溃将产生有限的调试输出。

如果expression为假(即比较等于零),则assert()将错误消息打印为标准错误并通过调用abort(3)终止程序。错误消息包括包含assert()调用的文件和函数的名称,调用的源代码行号以及参数的文本;就像是:

prog: some_file.c:16: some_func: Assertion `val == 0aq failed.

如果宏NDEBUG是在最后一次包含时定义的,则宏assert()不会生成任何代码,因此什么也不做。如果使用assert()来检测错误情况,则不建议定义NDEBUG,因为该软件的行为可能不确定。

返回值

没有返回值。

属性

有关本节中使用的术语的说明,请参见attribute(7)。

InterfaceAttributeValue
assert()Thread safetyMT-Safe

遵循规范

POSIX.1-2001,POSIX.1-2008,C89,C99。在C89中,表达式必须是int类型,如果不是,则导致未定义的行为结果,但是在C99中,它可以具有任何标量类型。

BUGS

assert()被实现为宏;如果测试的表达式具有副作用,则程序行为将取决于是否定义了NDEBUG而有所不同。这可能会创建Heisenbug,这些Heisenbug在打开调试功能后就会消失。

另外参见

中止(3),assert_perror(3),退出(3)

出版信息

这个页面是Linux手册页项目5.08版的一部分。有关项目的说明、有关报告错误的信息以及此页面的最新版本,请访问https://www.kernel.org/doc/man-pages/