stdint.h
========

POSIX specification:
 https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/stdint.h.html

Gnulib module: stdint

Portability problems fixed by Gnulib:

  * This header file is missing on some platforms: OpenBSD 3.8, AIX 5.1, HP-UX 11.11, IRIX 6.5, MSVC 14.

  * This header file is very incomplete on some platforms.

  * The values of SIG_ATOMIC_MIN and SIG_ATOMIC_MAX are incorrect on some platforms: FreeBSD 6.2 / ia64.

  * The value of WINT_MAX is incorrect on some platforms: mingw.

  * The values of INT8_MAX, UINT8_MAX etc. are not usable in preprocessor expressions on some platforms: HP-UX 11.23.

  * The values of INTPTR_MAX and UINTPTR_MAX, although correctly defined in <stdint.h>, are replaced by empty values when <limits.h> or <inttypes.h> gets included later on some platforms: Solaris 9 with GCC 4.5 or newer.

  * The macros WCHAR_MIN and WCHAR_MAX are not defined in <stdint.h> (only in <wchar.h>) on some platforms: Dragonfly.

  * On some hosts that predate C++11, when using C++ one must define __STDC_CONSTANT_MACROS to make visible the definitions of constant macros such as INTMAX_C, and one must define __STDC_LIMIT_MACROS to make visible the definitions of limit macros such as INTMAX_MAX.

  * The macro SIZE_MAX has the wrong type, albeit with the correct value: 32-bit glibc 2.24 (on s390 architecture), Mac OS X 10.7.

  * Macros like INTMAX_WIDTH are not defined on some platforms: glibc 2.24, many others.

Portability problems not fixed by Gnulib:

  * {uint,int}_fast{8,16,32,64}_t may not correspond to the fastest types available on the system. Other <stdint.h> substitutes may define these types differently, so public header files should avoid these types.

  * Macros are used instead of typedefs.

  * Some C preprocessors mishandle constants that do not fit in long int. For example, as of 2007, Sun C mishandles #if LLONG_MIN < 0 on a platform with 32-bit long int and 64-bit long long int. Some older preprocessors mishandle constants ending in LL. To work around these problems, compute the value of expressions like LONG_MAX < LLONG_MAX at configure-time rather than at #if-time.

The stdint module uses #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:

     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