diff options
Diffstat (limited to 'doc/posix-headers/stdalign.texi')
-rw-r--r-- | doc/posix-headers/stdalign.texi | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/doc/posix-headers/stdalign.texi b/doc/posix-headers/stdalign.texi index be3cec80d1..7f75a15540 100644 --- a/doc/posix-headers/stdalign.texi +++ b/doc/posix-headers/stdalign.texi @@ -1,15 +1,17 @@ @node stdalign.h @section @file{stdalign.h} -POSIX specification:@* Not in POSIX yet, but we expect it will be. -ISO C11 (latest free draft -@url{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1570.pdf}) +POSIX specification:@* Not in POSIX yet, but we expect it will be, +at least temporarily until it becomes obsolete due to its phasing +out starting in C23. +ISO C23 (latest free draft +@url{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3047.pdf}) sections 6.5.3.4, 6.7.5, 7.15. C++11 (latest free draft @url{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf}) section 18.10. -Gnulib module: stdalign +Gnulib module: alignasof Portability problems fixed by Gnulib: @itemize @@ -17,6 +19,10 @@ Portability problems fixed by Gnulib: On older C platforms @code{<stdalign.h>} must be included before using @code{alignas} or @code{alignof}. For example, GCC versions before 13 do not support these keywords, which were standardized by C23. +On C23 and later platforms, @code{<stdalign.h>} has no effect and need +not be included. (Gnulib-using code should not include +@code{<stdalign.h>} without also employing Gnulib's now-deprecated +@code{stdalign} module.) @item This header file is missing on many platforms: FreeBSD 6.4, NetBSD 7.1, OpenBSD 6.7, Minix 3.3.0, AIX 7.1, HP-UX 11.31, IRIX 6.5, Solaris 11.3, mingw, MSVC 14, Android 9.0. @@ -30,6 +36,15 @@ Older C platforms might not support the obsolescent @code{_Alignas} and @code{_Alignof} keywords or macros. This portability problem should not matter with code using this module, as such code should use @code{alignas} and @code{alignof} instead. +@item +In C11 and C17, @code{<stdalign.h>} defines the macros +@code{__alignas_is_defined} and +@code{__alignof_is_defined} to 1. +In C23, these macros are not defined. +This portability problem should not matter with code using Gnulib's +@code{alignasof} module, as such code should use @code{alignas} and +@code{alignof} without checking these two macros. (Gnulib's +now-deprecated @code{stdalign} module defines these two macros.) @end itemize Portability problems not fixed by Gnulib: @@ -66,14 +81,6 @@ external variables that are declared close together with @code{alignas}. The bug is fixed in Sun C 5.15, also known as Oracle Developer Studio 12.6 (2017). @item -@code{<stdalign.h>} must be #included before @code{_Alignas} and -@code{_Alignof} can be used. -@item -In C11 and C17, @code{<stdalign.h>} defines the macros -@code{__alignas_is_defined} and -@code{__alignof_is_defined} to 1. -In C23, these macros are not defined. -@item You cannot assume that @code{alignas} and @code{alignof} are reserved words; they might be macros. @end itemize |