Next: stdarg.h, Previous: spawn.h, Up: ISO C and POSIX Header File Substitutes [Contents][Index]
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
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3096.pdf)
sections 6.5.3.4, 6.7.5, 7.15.
C++11 (latest free draft
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf)
section 18.10.
Gnulib module: alignasof
Portability problems fixed by Gnulib:
<stdalign.h>
must be included before using
alignas
or alignof
. For example, GCC versions before 13 do not
support these keywords, which were standardized by C23.
On C23 and later platforms, <stdalign.h>
has no effect and need
not be included. (Gnulib-using code should not include
<stdalign.h>
without also employing Gnulib’s now-deprecated
stdalign
module.)
<stdalign.h>
does not define alignof
.
alignof
macro returns too large values for
the types double
and long long
in GCC 4.7.0.
_Alignas
and _Alignof
keywords or macros.
This portability problem should not matter with code using this module,
as such code should use alignas
and alignof
instead.
<stdalign.h>
defines the macros
__alignas_is_defined
and
__alignof_is_defined
to 1.
In C23, these macros are not defined.
This portability problem should not matter with code using Gnulib’s
alignasof
module, as such code should use alignas
and
alignof
without checking these two macros. (Gnulib’s
now-deprecated stdalign
module defines these two macros.)
alignas
attribute in the
specifier-qualifier position of a member declaration.
Portability problems not fixed by Gnulib:
alignof
must be a
parenthesized type. Recent versions of GCC support an extension in
which the operand can also be a unary expression, as with
sizeof
. The Gnulib substitute does not support this extension.
alignof
cannot be a structure type containing a
flexible array member.
alignas
keyword or macro is not always supported.
Supported compilers include any compiler supporting C11 or later,
which includes GCC, IBM C, Sun C 5.9 and later,
and MSVC 7.0 and later.
alignas
of auto
variables (i.e.,
variables on the stack). They diagnose and ignore the alignment: Sun
C 5.11.
alignas
that are greater than 8: mingw.
alignas
to be a single integer constant, not an expression: MSVC 7.0 through
at least 10.0.
alignas
. The bug is fixed in Sun C 5.15, also known as Oracle
Developer Studio 12.6 (2017).
alignas
and alignof
are reserved words;
they might be macros.
Next: stdarg.h, Previous: spawn.h, Up: ISO C and POSIX Header File Substitutes [Contents][Index]