[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
stdalign: Avoid namespace pollution
From: |
Bruno Haible |
Subject: |
stdalign: Avoid namespace pollution |
Date: |
Sun, 25 Sep 2022 00:25:22 +0200 |
In some cases, gnulib's <stdalign.h> does not need to include <stddef.h>. In
this case, avoid namespace pollution.
2022-09-24 Bruno Haible <bruno@clisp.org>
stdalign: Avoid namespace pollution.
* lib/stdalign.in.h (_GL_STDALIGN_NEEDS_STDDEF): New macro.
Include <stddef.h> only when needed.
diff --git a/lib/stdalign.in.h b/lib/stdalign.in.h
index 3b117df11f..9ba40e2c45 100644
--- a/lib/stdalign.in.h
+++ b/lib/stdalign.in.h
@@ -42,10 +42,7 @@
'-malign-double' is used.
The result cannot be used as a value for an 'enum' constant, if you
- want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc.
-
- Include <stddef.h> for offsetof. */
-#include <stddef.h>
+ want to be portable to HP-UX 10.20 cc and AIX 3.2.5 xlc. */
/* FreeBSD 9.1 <sys/cdefs.h>, included by <stddef.h> and lots of other
standard headers, defines conflicting implementations of _Alignas
@@ -66,9 +63,11 @@
# else
template <class __t> struct __alignof_helper { char __a; __t __b; };
# define _Alignof(type) offsetof (__alignof_helper<type>, __b)
+# define _GL_STDALIGN_NEEDS_STDDEF 1
# endif
# else
# define _Alignof(type) offsetof (struct { char __a; type __b; }, __b)
+# define _GL_STDALIGN_NEEDS_STDDEF 1
# endif
#endif
#if ! (defined __cplusplus && 201103 <= __cplusplus)
@@ -124,4 +123,9 @@
# define __alignas_is_defined 1
#endif
+/* Include <stddef.h> if needed for offsetof. */
+#if _GL_STDALIGN_NEEDS_STDDEF
+# include <stddef.h>
+#endif
+
#endif /* _GL_STDALIGN_H */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- stdalign: Avoid namespace pollution,
Bruno Haible <=