Namespaces
Variants
Views
Actions

assert

From cppreference.com
< c‎ | error
Revision as of 22:03, 2 November 2012 by P12bot (Talk | contribs)

Defined in header <assert.h>
#ifdef NDEBUG

#define assert(condition) ((void)0)
#else
#define assert(condition) /*implementation defined*/

#endif

The definition of the macro assert depends on another macro, NDEBUG, which is not defined by the standard library.

If NDEBUG is defined as a macro name at the point in the source code where <assert.h> is included, then assert does nothing.

If NDEBUG is not defined, then assert checks if its argument (which must have scalar type) compares equal to zero. If it does, assert outputs implementation-specific diagnostic information on the standard error output and calls abort(). The diagnostic information is required to include the text of expression, as well as the values of the standard macros __FILE__, __LINE__, and the standard variable __func__.

Contents

Parameters

condition - expression of scalar type

Return value

(none)

Example

#include <stdio.h>
#include <assert.h>
 
int main (int argc, char **argv)
{
	// Test if 0 is really equivalent to 0
	assert (0 == 0);
 
	// Test if 1 is different than 0...
	assert (1 == 0);
 
	return 0;
}

Output:

example: ex.c:10: int main(int, char**): Assertion `1 == 0' failed.
Aborted

See also

Template:c/program/dcl list abort