Jump to content

assert.h

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Zehdeh (talk | contribs) at 18:31, 23 March 2012 (added example code and ref). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

[1]

assert.h is a header file in the standard library of the C programming language that defines the C preprocessor macro assert(). The macro implements an assertion, which can be used to verify assumptions made by the program and print a diagnostic message if this assumption is false. In C++ it is also available through the cassert header file.

When executed, if the expression is false (that is, compares equal to 0), assert() writes information about the call that failed on stderr and then calls abort(). The information it writes to stderr includes:

  • the source filename (the predefined macro __FILE__)
  • the source line number (the predefined macro __LINE__)
  • the source function (the predefined identifier __func__) (added in C99)
  • the text of expression that evaluated to 0

Example output of a program compiled with gcc on Linux:

program: program.c:5: main: Assertion `a != 1' failed.
Abort (core dumped)

Programmers can eliminate the assertions without changing the source code: if the macro NDEBUG is defined before the inclusion of <assert.h>, the assert() macro is defined simply as:

#define assert(ignore)((void) 0)

and therefore has no effect on the program, not even evaluating its argument. Therefore expressions passed to assert() must not contain side-effects since they will not happen when debugging is disabled. For instance:

assert(x = gets());

will not read a line and not assign to x when debugging is disabled.

assert Example

#include <stdio.h>
#include <assert.h>

int test_assert ( int x )
{
   assert( x <= 4 );
   return x;
}

int main ( void ) 
{
  int i;

    for (i=0; i<=9; i++){
        test_assert( i );
        printf("i = %i\n", i);
    }

  return 0;
}
output of assert
assert: assert.c:6: test_assert: Assertion `x <= 4' failed.


References

  1. ^ [Coding Programmer Page C / C++ Reference].