+#define STATIC_ASSERT_SIZEOF_ELT(d, e, s) \
+ STATIC_ASSERT (sizeof (((d *)0)->e) == s, "Size of " #d "." #e " must be " # s " bytes")
+
+#define STATIC_ASSERT_OFFSET_OF(s, e, o) \
+ STATIC_ASSERT (STRUCT_OFFSET_OF(s,e) == o, "Offset of " #s "." #e " must be " # o)
+
+#define STATIC_ASSERT_FITS_IN(s, e, o) \
+ STATIC_ASSERT (STRUCT_OFFSET_OF(s,e) <= (o - sizeof(((s *)0)->e)), \
+ #s "." #e " does not fit into " # o " bytes")
+