35 lines
1.2 KiB
Diff
35 lines
1.2 KiB
Diff
diff --git a/src/lisp.h b/src/lisp.h
|
|
--- a/src/lisp.h
|
|
+++ b/src/lisp.h
|
|
@@ -1154,6 +1154,8 @@
|
|
|
|
/* ------------------------ alignment definitions ------------------- */
|
|
|
|
+#if (!defined (__STDC_VERSION__) || __STDC_VERSION__ < 201112L) && \
|
|
+ (!defined (__cplusplus) || __cplusplus < 201103L)
|
|
/* No type has a greater alignment requirement than max_align_t.
|
|
(except perhaps for types we don't use, like long double) */
|
|
typedef union
|
|
@@ -1163,6 +1165,7 @@
|
|
struct { void (*f)(void); } f;
|
|
struct { double d; } d;
|
|
} max_align_t;
|
|
+#endif
|
|
|
|
/* ALIGNOF returns the required alignment of a type -- i.e. a value such
|
|
that data of this type must begin at a memory address which is a
|
|
@@ -1170,7 +1173,11 @@
|
|
as the type itself. */
|
|
|
|
#ifndef ALIGNOF
|
|
-# if defined (__GNUC__) && (__GNUC__ >= 2)
|
|
+# if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 201112L
|
|
+# define ALIGNOF(type) _Alignof(type)
|
|
+# elif defined (__cplusplus) && __cplusplus >= 201103L
|
|
+# define ALIGNOF(type) alignof(type)
|
|
+# elif defined (__GNUC__) && (__GNUC__ >= 2)
|
|
/* gcc has an extension that gives us exactly what we want. */
|
|
# define ALIGNOF(type) __alignof__ (type)
|
|
# elif ! defined (__cplusplus)
|
|
|
|
|