Static Assertions & Compile-Time Checks
include/test/static_assert.h View source View on GitHubMacros
Section titled “Macros”static_assert_size
Section titled “static_assert_size”#define static_assert_size(type, expected_size) \
_Static_assert(sizeof(type) == (expected_size), \
"sizeof(" #type ") != " #expected_size) static_assert_align
Section titled “static_assert_align”#define static_assert_align(type, expected_align) \
_Static_assert(_Alignof(type) == (expected_align), \
"alignof(" #type ") != " #expected_align) static_assert_offset
Section titled “static_assert_offset”#define static_assert_offset(type, member, expected_offset) \
_Static_assert(offsetof(type, member) == (expected_offset), \
"offsetof(" #type ", " #member ") != " #expected_offset) static_assert_disjoint_masks
Section titled “static_assert_disjoint_masks”#define static_assert_disjoint_masks(mask1, mask2) \
_Static_assert(((mask1) & (mask2)) == 0, \
"masks " #mask1 " and " #mask2 " overlap")