Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ASSERT(3)		 BSD Library Functions Manual		     ASSERT(3)

NAME
     assert -- expression verification macro

SYNOPSIS
     #include <assert.h>

     assert(expression);

DESCRIPTION
     The assert() macro	tests the given	expression and if it is	false, the
     calling process is	terminated.  A diagnostic message is written to	stderr
     and the function abort(3) is called, effectively terminating the program.

     If	expression is true, the	assert() macro does nothing.

     The assert() macro	may be removed at compile time by defining NDEBUG as a
     macro (e.g., by using the cc(1) option -DNDEBUG).	Unlike most other in-
     clude files, <assert.h> may be included multiple times.  Each time
     whether or	not NDEBUG is defined determines the behavior of assert	from
     that point	forward	until the end of the unit or another include of
     <assert.h>.

     The assert() macro	should only be used for	ensuring the developer's ex-
     pectations	hold true.  It is not appropriate for regular run-time error
     detection.

EXAMPLES
     The assertion:
	   assert(1 == 0);
     generates a diagnostic message similar to the following:
	   Assertion failed: (1	== 0), function	main, file main.c, line	100.

     The following assert tries	to assert there	was no partial read:
	   assert(read(fd, buf,	nbytes)	== nbytes);
     However, there are	two problems.  First, it checks	for normal conditions,
     rather than conditions that indicate a bug.  Second, the code will	disap-
     pear if NDEBUG is defined,	changing the semantics of the program.

SEE ALSO
     abort2(2),	abort(3)

STANDARDS
     The assert() macro	conforms to ISO/IEC 9899:1999 ("ISO C99").

HISTORY
     An	assert macro appeared in Version 7 AT&T	UNIX.

BSD				 May 31, 2018				   BSD

NAME | SYNOPSIS | DESCRIPTION | EXAMPLES | SEE ALSO | STANDARDS | HISTORY

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=assert&sektion=3&manpath=FreeBSD+13.0-RELEASE+and+Ports>

home | help