From WikiChip
Difference between revisions of "c/assert.h/assert"
m (Inject moved page Assert.h/assert - C to c/assert.h/assert) |
m |
||
Line 1: | Line 1: | ||
− | {{ | + | {{c title|assert macro - <assert.h>}}{{Assert.h - C}} |
− | {{Assert.h - C}} | + | The '''assert''' macro, which is part of {{C|assert.h|<assert.h>}} can be used to insert diagnostic tests into a program. |
− | The '''assert''' macro, which is part of | ||
== Synopsis == | == Synopsis == | ||
Line 13: | Line 12: | ||
* The text of the argument | * The text of the argument | ||
− | * The name of the source file ( | + | * The name of the source file ({{C|__FILE__}}) |
− | * The source line number ( | + | * The source line number ({{C|__LINE__}}) |
− | * The name of the enclosing function ( | + | * The name of the enclosing function ({{C|__func__}}) ([[C99]]) |
− | If '''NDEBUG''' is defined as a macro name prior to the inclusion of | + | If '''NDEBUG''' is defined as a macro name prior to the inclusion of {{C|assert.h|<assert.h>}}, assert gets defined as: |
<source lang="c">#define assert(ignore) ((void)0)</source> | <source lang="c">#define assert(ignore) ((void)0)</source> | ||
Line 63: | Line 62: | ||
== See also == | == See also == | ||
− | * | + | * {{C|Assert.h/static_assert|static_assert macro}} |
− | * | + | * {{C|assert.h|<assert.h> header}} |
− | * | + | * {{C|standard library|C Standard Library}} |
− | * [[C | + | * [[C]] |
− | {{DEFAULTSORT:assert | + | {{DEFAULTSORT:assert}} |
[[Category:assert.h - C]] | [[Category:assert.h - C]] | ||
[[Category:Assertion - C]] | [[Category:Assertion - C]] |
Latest revision as of 07:27, 4 January 2015
The assert macro, which is part of <assert.h> can be used to insert diagnostic tests into a program.
Synopsis[edit]
#include <assert.h>
void assert(scalar expression);
Description[edit]
When executed, if the expression is false (I.E. compares to zero), a diagnostic message is printed in an implementation-defined format to the standard error stream. Assert then calls the abort function.
The diagnostic message includes:
- The text of the argument
- The name of the source file (__FILE__)
- The source line number (__LINE__)
- The name of the enclosing function (__func__) (C99)
If NDEBUG is defined as a macro name prior to the inclusion of <assert.h>, assert gets defined as:
#define assert(ignore) ((void)0)
Parameters[edit]
Parameter | Description |
---|---|
expression | The expression to be evaluated |
Returns[edit]
The assert macro returns no value.
Example[edit]
#include <assert.h>
#include <stdio.h>
int main(void)
{
int i;
for (i = 0; i < 10; i++)
{
printf("i = %d\n", i);
assert(i < 5);
}
return 0;
}
Example Output:
i = 0 i = 1 i = 2 i = 3 i = 4 i = 5 example: example.c:11: main: Assertion `i < 5' failed. Aborted (core dumped)
Starting at variable i being set to zero, the loop continues until the assertion fails when i reaches 5. The program terminates by calling abort() after printing the diagnostic message.