From WikiChip
Difference between revisions of "c/assert.h/static assert"
Line 3: | Line 3: | ||
The '''static_assert''' macro, which is part of <[[assert.h - C|assert.h]]>, is a convenient object-like macro name that expands to the '''[[static assertions - C|_Static_assert]]''' keyword. | The '''static_assert''' macro, which is part of <[[assert.h - C|assert.h]]>, is a convenient object-like macro name that expands to the '''[[static assertions - C|_Static_assert]]''' keyword. | ||
− | + | == Synopsis == | |
− | |||
<source lang="c">#include <assert.h> | <source lang="c">#include <assert.h> | ||
#define static_assert _Static_assert</source> | #define static_assert _Static_assert</source> |
Revision as of 21:01, 13 December 2013
The static_assert macro, which is part of <assert.h>, is a convenient object-like macro name that expands to the _Static_assert keyword.
Synopsis
#include <assert.h>
#define static_assert _Static_assert
Description
The static_assert object-like macro expands to the _Static_assert, a keyword added in C11 to provide compile-time assertion.
Example
#include <assert.h>
static_assert(sizeof(int) == 4, "Code relies on int being exactly 4 bytes");
int main(void)
{
return 0;
}
On a machine where sizeof (int) is not 4, a constraint violation occurs. On such implementations, a diagnostic message is printed similar to the one below:
example.c:3:1: error: static assertion failed "Code relies on int being exactly 4 bytes"