assert
| Defined in header <assert.h>
|
||
| #ifdef NDEBUG #define assert(condition) ((void)0) |
||
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 predefined variable __func__. (since C99)
Contents |
[edit] Parameters
| condition | - | expression of scalar type |
[edit] Return value
(none)
[edit] Example
Output:
output with NDEBUG not defined: a.out: main.cpp:10: main: Assertion `x >= 0.0' failed. output with NDEBUG defined: sqrt(x) = -nan
[edit] References
- C11 standard (ISO/IEC 9899:2011):
- 7.2.1.1 The assert macro (p: 186-187)
- C99 standard (ISO/IEC 9899:1999):
- 7.2.1.1 The assert macro (p: 169)
- C89/C90 standard (ISO/IEC 9899:1990):
- 4.2.1.1 The assert macro
[edit] See also
| causes abnormal program termination (without cleaning up) (function) | |
| C++ documentation for assert
| |

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
