bug-gnulib
[Top][All Lists]
Advanced

[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 */






reply via email to

[Prev in Thread] Current Thread [Next in Thread]