1.\" $NetBSD: assert.3,v 1.7 2002/02/13 08:17:28 ross Exp $ 2.\" 3.\" Copyright (c) 1991, 1993 4.\" The Regents of the University of California. All rights reserved. 5.\" 6.\" Redistribution and use in source and binary forms, with or without 7.\" modification, are permitted provided that the following conditions 8.\" are met: 9.\" 1. Redistributions of source code must retain the above copyright 10.\" notice, this list of conditions and the following disclaimer. 11.\" 2. Redistributions in binary form must reproduce the above copyright 12.\" notice, this list of conditions and the following disclaimer in the 13.\" documentation and/or other materials provided with the distribution. 14.\" 3. All advertising materials mentioning features or use of this software 15.\" must display the following acknowledgement: 16.\" This product includes software developed by the University of 17.\" California, Berkeley and its contributors. 18.\" 4. Neither the name of the University nor the names of its contributors 19.\" may be used to endorse or promote products derived from this software 20.\" without specific prior written permission. 21.\" 22.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32.\" SUCH DAMAGE. 33.\" 34.\" @(#)assert.3 8.1 (Berkeley) 6/9/93 35.\" 36.Dd December 17, 2000 37.Dt ASSERT 3 38.Os 39.Sh NAME 40.Nm assert 41.Nd expression verification macro 42.Sh SYNOPSIS 43.Fd #include \*[Lt]assert.h\*[Gt] 44.Fn assert expression 45.Sh DESCRIPTION 46The 47.Fn assert 48macro tests the given 49.Ar expression 50and if it is false, 51the calling process is terminated. 52A diagnostic message, consisting of the text of the expression, 53the name of the source file, the line number and the enclosing 54function, 55is written to 56.Em stderr 57and the 58.Xr abort 3 59function is called, effectively terminating the program. 60.Pp 61If 62.Ar expression 63is true, 64the 65.Fn assert 66macro does nothing. 67.Pp 68The 69.Fn assert 70macro 71may be removed at compile time with 72the 73.Xr cc 1 74option 75.Fl DNDEBUG . 76.Sh DIAGNOSTICS 77The following diagnostic message is written to 78.Em stderr 79if 80.Ar expression 81is false: 82.Bd -literal -offset indent 83"assertion \e"%s\e" failed: file \e"%s\e", line %d, function \e"%s\e"\en", \e 84 "expression", __FILE__, __LINE__, __func__); 85.Ed 86.Sh SEE ALSO 87.Xr cc 1 , 88.Xr abort 3 89.Sh STANDARDS 90The 91.Fn assert 92macro conforms to 93.St -isoC99 . 94.Sh HISTORY 95A 96.Nm assert 97macro appeared in 98.At v6 . 99.Pp 100Information on the name of the enclosing function appeared in 101.St -isoC99 . 102