summaryrefslogtreecommitdiff
path: root/ccan/alignof/alignof.h
diff options
context:
space:
mode:
Diffstat (limited to 'ccan/alignof/alignof.h')
-rw-r--r--ccan/alignof/alignof.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/ccan/alignof/alignof.h b/ccan/alignof/alignof.h
new file mode 100644
index 0000000..9a02f18
--- /dev/null
+++ b/ccan/alignof/alignof.h
@@ -0,0 +1,20 @@
+/* CC0 (Public domain) - see LICENSE file for details */
+#ifndef CCAN_ALIGNOF_H
+#define CCAN_ALIGNOF_H
+#include "config.h"
+
+/**
+ * ALIGNOF - get the alignment of a type
+ * @t: the type to test
+ *
+ * This returns a safe alignment for the given type.
+ */
+#if HAVE_ALIGNOF
+/* A GCC extension. */
+#define ALIGNOF(t) __alignof__(t)
+#else
+/* Alignment by measuring structure padding. */
+#define ALIGNOF(t) ((char *)(&((struct { char c; t _h; } *)0)->_h) - (char *)0)
+#endif
+
+#endif /* CCAN_ALIGNOF_H */