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

FreeBSD Manual Pages

  
 
  

home | help
ASSERT(3)		    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
       include 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	condi-
       tions,  rather  than  conditions	that indicate a	bug.  Second, the code
       will disappear if NDEBUG	is defined, changing the semantics of the pro-
       gram.

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.

FreeBSD	13.0			 May 31, 2018			     ASSERT(3)

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