2 @section @file{stdint.h}
4 POSIX specification:@* @url{http://www.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html}
8 Portability problems fixed by Gnulib:
11 This header file is missing on some platforms:
12 OpenBSD 3.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, OSF/1 5.1, MSVC 9, Interix 3.5, BeOS.
14 This header file is very incomplete on some platforms.
16 The values of @code{SIG_ATOMIC_MIN} and @code{SIG_ATOMIC_MAX} are incorrect
20 The value of @code{WINT_MAX} is incorrect on some platforms:
23 The values of @code{INT8_MAX}, @code{UINT8_MAX} etc. are not usable in
24 preprocessor expressions on some platforms:
27 The macros @code{WCHAR_MIN} and @code{WCHAR_MAX} are not defined in
28 @code{<stdint.h>} (only in @code{<wchar.h>}) on some platforms:
31 On some hosts that predate C++11, when using C++ one must define
32 @code{__STDC_CONSTANT_MACROS} to make visible the definitions of
33 constant macros such as @code{INTMAX_C}, and one must define
34 @code{__STDC_LIMIT_MACROS} to make visible the definitions of limit
35 macros such as @code{INTMAX_MAX}.
37 Macros like @code{INTMAX_WIDTH} are not defined on some platforms:
38 glibc 2.24, many others.
41 Portability problems not fixed by Gnulib:
44 @code{@{uint,int@}_fast@{8,16,32,64@}_t} may not correspond to the fastest
45 types available on the system.
46 Other @code{<stdint.h>} substitutes may define these types differently,
47 so public header files should avoid these types.
49 Macros are used instead of typedefs.
51 The macro @code{SIZE_MAX} has the wrong type,
52 albeit with the correct value:
53 32-bit glibc 2.24 (on s390 architecture), Mac OS X 10.7.
55 Some C preprocessors mishandle constants that do not fit in @code{long int}.
56 For example, as of 2007, Sun C mishandles @code{#if LLONG_MIN < 0} on
57 a platform with 32-bit @code{long int} and 64-bit @code{long long int}.
58 Some older preprocessors mishandle constants ending in @code{LL}.
59 To work around these problems, compute the value of expressions like
60 @code{LONG_MAX < LLONG_MAX} at @code{configure}-time rather than at
64 The stdint.h module uses @code{#include_next}. If you wish to install
65 the generated stdint.h file under another name, typically in order to
66 be able to use some of the types defined by stdint.h in your public
67 header file, you could use the following Makefile.am-snippet:
71 BUILT_SOURCES += idn-int.h
72 DISTCLEANFILES += idn-int.h
73 nodist_include_HEADERS += idn-int.h
76 if test -n "$(STDINT_H)"; then \
77 sed -e s/include_next/include/ gl/stdint.h > idn-int.h; \
79 echo '#include <stdint.h>' > idn-int.h; \