C 语言中的断言

17 Mar 2025 | 阅读 2 分钟

如果开发人员希望断言或进行假设,则在程序中使用断言。一个可以使用断言的例子是检查 malloc() 返回的指针是否为 NULL 值。它是一个诊断工具。

C 语言中 assert() 函数的语法

它接受一个表达式作为函数的参数。对参数进行评估。如果表达式评估后返回的值为 0 或 FALSE,则它会返回该表达式以及文件名和执行行作为错误。如果发生错误,程序将调用 abort() 函数。如果表达式评估为 TRUE,则 assert 函数不会执行任何操作。

在程序中实现 assert()

要在程序中实现 assert() 函数,您必须在程序中包含 assert.h 头文件。

输出

在下面的程序中,由于条件为假,所以进行断言。断言失败。

Assert in C Programming

C 语言中的断言与错误处理

程序员使用断言来检查逻辑上不正确的条件。它用于程序员希望在程序运行或完成执行之前确保代码状态的场景。这种情况在逻辑上不可能发生。

错误处理在运行时执行,而断言语句不在运行时运行。建议在执行时不要在程序中使用 assert() 语句,因为它可能会在执行期间产生副作用。

忽略程序中的断言

如前所述,assert 语句可能会在程序编译时产生副作用,并且从代码中删除所有断言是一个非常繁琐和困难的过程。

在 C 语言中,有一种更简单的方法可以在执行期间完全从代码中删除所有 assert 语句。

这是通过使用预处理器 NDEBUG 来完成的。

下面是使用 NDEBUG 实现断言的代码。

输出

Assert in C Programming