Manpages - assert.3

Table of Contents

NAME

assert - abort the program if assertion is false

SYNOPSIS

  #include <assert.h>

  void assert(scalar expression);

DESCRIPTION

This macro can help programmers find bugs in their programs, or handle exceptional cases via a crash that will produce limited debugging output.

If expression is false (i.e., compares equal to zero), *assert*() prints an error message to standard error and terminates the program by calling *abort*(3). The error message includes the name of the file and function containing the *assert*() call, the source code line number of the call, and the text of the argument; something like:

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

If the macro NDEBUG is defined at the moment <assert.h> was last included, the macro assert*() generates no code, and hence does nothing at all. It is not recommended to define *NDEBUG if using *assert*() to detect error conditions since the software may behave non-deterministically.

RETURN VALUE

No value is returned.

ATTRIBUTES

For an explanation of the terms used in this section, see *attributes*(7).

Interface Attribute Value
*assert*() Thread safety MT-Safe

CONFORMING TO

POSIX.1-2001, POSIX.1-2008, C89, C99. In C89, expression is required to be of type int and undefined behavior results if it is not, but in C99 it may have any scalar type.

BUGS

assert*() is implemented as a macro; if the expression tested has side-effects, program behavior will be different depending on whether *NDEBUG is defined. This may create Heisenbugs which go away when debugging is turned on.

SEE ALSO

*abort*(3), *assert_perror*(3), *exit*(3)

COLOPHON

This page is part of release 5.13 of the Linux man-pages project. A description of the project, information about reporting bugs, and the latest version of this page, can be found at https://www.kernel.org/doc/man-pages/.

Author: dt

Created: 2022-02-20 Sun 14:32