+/* --- @SOD__ALIGNOF@ --- *
+ *
+ * Arguments: @type@ = a C type name, consisting of declaration specifiers
+ * and `*[QUALIFIERS]' declarator operators
+ *
+ * Returns: A sufficient alignment for objects of the given @type@, as a
+ * @size_t@.
+ */
+
+#if __STDC_VERSION__ >= 201112
+# define SOD__ALIGNOF(type) _Alignof(type)
+#elif SOD__GCC_P(4, 7)
+# define SOD__ALIGNOF(type) __extension__ _Alignof(type)
+#elif defined(__GNUC__)
+# define SOD__ALIGNOF(type) __alignof__(type)
+#else
+# define SOD__ALIGNOF(type) \
+offsetof(struct { char sod__x; type sod__y; }, sod__y)
+#endif
+