9.2. Diagnostics
While you are debugging programs, it is often useful to
check that the value of an expression is the one that you
expected. The assert function provides such a diagnostic
aid.
In order to use assert you must first include the header
file <assert.h> . The function is defined as
#include <assert.h>
void assert(int expression)
If the expression evaluates to zero (i.e. false) then
assert will write a message about the failing expression,
including the name of the source file, the line at which the
assertion was made and the expression itself. After this,
the abort function is called, which will halt the program.
assert(1 == 2);
/* Might result in */
Assertion failed: 1 == 2, file silly.c, line 15
Assert is actually defined as a macro, not as a real
function. In order to disable assertions when a program is
found to work satisfactorily, defining the name NDEBUG
before including <assert.h> will disable
assertions totally.
You should beware of side effects that the expression may
have: when assertions are turned off with NDEBUG , the
expression is not evaluated. Thus the following example will
behave unexpectedly when debugging is turned off with the
#define NDEBUG .
#define NDEBUG
#include <assert.h>
void
func(void)
{
int c;
assert((c = getchar()) != EOF);
putchar(c);
} Example 9.2
Note that assert returns no value.
|
Printer-friendly version
The C Book
This book is published as a matter of historical interest.
Please read the
copyright and disclaimer information.
GBdirect Ltd provides up-to-date training and consultancy in
C,
Embedded C,
C++
and a wide range of
other subjects based on
open standards if you happen to be interested.
|