Mercurial > gnulib
view doc/posix-headers/stdint.texi @ 17364:7524d97ae56f
stdalign: port to stricter ISO C11
ISO C11 says that _Alignof's operand must be a parenthesized type.
Problem reported by Eli Zaretskii in
<http://lists.gnu.org/archive/html/emacs-devel/2013-03/msg00960.html>.
* doc/posix-headers/stdalign.texi (stdalign.h): Document this.
* m4/stdalign.m4 (gl_STDALIGN_H): Don't use _Alignof (expr).
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Fri, 29 Mar 2013 19:47:13 -0700 |
parents | 5891d985e4e9 |
children | d8976fc3b67c |
line wrap: on
line source
@node stdint.h @section @file{stdint.h} POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html} Gnulib module: stdint Portability problems fixed by Gnulib: @itemize @item This header file is missing on some platforms: OpenBSD 3.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, MSVC 9, Interix 3.5, BeOS. @item This header file is very incomplete on some platforms. @item The values of @code{SIG_ATOMIC_MIN} and @code{SIG_ATOMIC_MAX} are incorrect on some platforms: FreeBSD 6.2 / ia64. @item The value of @code{WINT_MAX} is incorrect on some platforms: mingw. @item The values of @code{INT8_MAX}, @code{UINT8_MAX} etc. are not usable in preprocessor expressions on some platforms: HP-UX 11.23. @item The macros @code{WCHAR_MIN} and @code{WCHAR_MAX} are not defined in @code{<stdint.h>} (only in @code{<wchar.h>}) on some platforms: Dragonfly, BSDI. @item On some hosts that predate C++11, when using C++ one must define @code{__STDC_CONSTANT_MACROS} to make visible the definitions of constant macros such as @code{INTMAX_C}, and one must define @code{__STDC_LIMIT_MACROS} to make visible the definitions of limit macros such as @code{INTMAX_MAX}. @end itemize Portability problems not fixed by Gnulib: @itemize @item @code{@{uint,int@}_fast@{8,16,32,64@}_t} may not correspond to the fastest types available on the system. Other @code{<stdint.h>} substitutes may define these types differently, so public header files should avoid these types. @item Macros are used instead of typedefs. @item Some C preprocessors mishandle constants that do not fit in @code{long int}. For example, as of 2007, Sun C mishandles @code{#if LLONG_MIN < 0} on a platform with 32-bit @code{long int} and 64-bit @code{long long int}. Some older preprocessors mishandle constants ending in @code{LL}. To work around these problems, compute the value of expressions like @code{LONG_MAX < LLONG_MAX} at @code{configure}-time rather than at @code{#if}-time. @end itemize The stdint.h module uses @code{#include_next}. If you wish to install the generated stdint.h file under another name, typically in order to be able to use some of the types defined by stdint.h in your public header file, you could use the following Makefile.am-snippet: @example BUILT_SOURCES += idn-int.h DISTCLEANFILES += idn-int.h nodist_include_HEADERS += idn-int.h idn-int.h: if test -n "$(STDINT_H)"; then \ sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \ else \ echo '#include <stdint.h>' > idn-int.h; \ fi @end example