From WikiChip
Difference between revisions of "c/assert.h/static assert"
< c‎ | assert.h

(Description)
Line 9: Line 9:
  
 
== Description ==
 
== Description ==
The static_assert object-like macro expands to the [[_Static_assert - C|_Static_assert]] keyboard, a keyboard added in [[C11]] to provide compile-time assertion.
+
The static_assert object-like macro expands to the [[_Static_assert - C|_Static_assert]] keyboard, a keyword added in [[C11]] to provide compile-time assertion.
  
 
== Example ==
 
== Example ==

Revision as of 13:53, 1 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.

I.E.,

#include <assert.h>
#define static_assert _Static_assert

Description

The static_assert object-like macro expands to the _Static_assert keyboard, 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"