1 /* Copyright (C) 2006-2008 Free Software Foundation, Inc.
2 Written by Paul Eggert, Bruno Haible, Derek Price.
3 This file is part of gnulib.
5 This program is free software: you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 3 of the License, or
8 (at your option) any later version.
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
15 You should have received a copy of the GNU General Public License
16 along with this program. If not, see <http://www.gnu.org/licenses/>. */
19 * ISO C 99 <inttypes.h> for platforms that lack it.
20 * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
23 /* Include the original <inttypes.h> if it exists, and if this file
24 has not been included yet or if this file includes gnulib stdint.h
25 which in turn includes this file.
26 The include_next requires a split double-inclusion guard. */
27 #if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
28 # if @HAVE_INTTYPES_H@
30 @PRAGMA_SYSTEM_HEADER@
32 # @INCLUDE_NEXT@ @NEXT_INTTYPES_H@
36 #if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H
39 /* Include <stdint.h> or the gnulib replacement. */
44 #if !(INT_MIN == INT32_MIN && INT_MAX == INT32_MAX)
45 # error "This file assumes that 'int' has exactly 32 bits. Please report your platform and compiler to <bug-gnulib@gnu.org>."
48 /* The definition of GL_LINK_WARNING is copied here. */
50 /* 7.8.1 Macros for format specifiers */
52 #if ! defined __cplusplus || defined __STDC_FORMAT_MACROS
54 # if defined _TNS_R_TARGET
55 /* Tandem NonStop R series and compatible platforms released before
56 July 2005 support %Ld but not %lld. */
57 # define _LONG_LONG_FORMAT_PREFIX "L"
59 # define _LONG_LONG_FORMAT_PREFIX "ll"
62 # if !defined PRId8 || @PRI_MACROS_BROKEN@
68 # if !defined PRIi8 || @PRI_MACROS_BROKEN@
74 # if !defined PRIo8 || @PRI_MACROS_BROKEN@
80 # if !defined PRIu8 || @PRI_MACROS_BROKEN@
86 # if !defined PRIx8 || @PRI_MACROS_BROKEN@
92 # if !defined PRIX8 || @PRI_MACROS_BROKEN@
98 # if !defined PRId16 || @PRI_MACROS_BROKEN@
104 # if !defined PRIi16 || @PRI_MACROS_BROKEN@
110 # if !defined PRIo16 || @PRI_MACROS_BROKEN@
116 # if !defined PRIu16 || @PRI_MACROS_BROKEN@
122 # if !defined PRIx16 || @PRI_MACROS_BROKEN@
128 # if !defined PRIX16 || @PRI_MACROS_BROKEN@
134 # if !defined PRId32 || @PRI_MACROS_BROKEN@
140 # if !defined PRIi32 || @PRI_MACROS_BROKEN@
146 # if !defined PRIo32 || @PRI_MACROS_BROKEN@
152 # if !defined PRIu32 || @PRI_MACROS_BROKEN@
158 # if !defined PRIx32 || @PRI_MACROS_BROKEN@
164 # if !defined PRIX32 || @PRI_MACROS_BROKEN@
171 # if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @INT64_MAX_EQ_LONG_MAX@)
172 # define _PRI64_PREFIX "l"
173 # elif defined _MSC_VER || defined __MINGW32__
174 # define _PRI64_PREFIX "I64"
175 # elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
176 # define _PRI64_PREFIX _LONG_LONG_FORMAT_PREFIX
178 # if !defined PRId64 || @PRI_MACROS_BROKEN@
180 # define PRId64 _PRI64_PREFIX "d"
182 # if !defined PRIi64 || @PRI_MACROS_BROKEN@
184 # define PRIi64 _PRI64_PREFIX "i"
188 # if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
189 # define _PRIu64_PREFIX "l"
190 # elif defined _MSC_VER || defined __MINGW32__
191 # define _PRIu64_PREFIX "I64"
192 # elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
193 # define _PRIu64_PREFIX _LONG_LONG_FORMAT_PREFIX
195 # if !defined PRIo64 || @PRI_MACROS_BROKEN@
197 # define PRIo64 _PRIu64_PREFIX "o"
199 # if !defined PRIu64 || @PRI_MACROS_BROKEN@
201 # define PRIu64 _PRIu64_PREFIX "u"
203 # if !defined PRIx64 || @PRI_MACROS_BROKEN@
205 # define PRIx64 _PRIu64_PREFIX "x"
207 # if !defined PRIX64 || @PRI_MACROS_BROKEN@
209 # define PRIX64 _PRIu64_PREFIX "X"
213 # if !defined PRIdLEAST8 || @PRI_MACROS_BROKEN@
215 # define PRIdLEAST8 "d"
217 # if !defined PRIiLEAST8 || @PRI_MACROS_BROKEN@
219 # define PRIiLEAST8 "i"
221 # if !defined PRIoLEAST8 || @PRI_MACROS_BROKEN@
223 # define PRIoLEAST8 "o"
225 # if !defined PRIuLEAST8 || @PRI_MACROS_BROKEN@
227 # define PRIuLEAST8 "u"
229 # if !defined PRIxLEAST8 || @PRI_MACROS_BROKEN@
231 # define PRIxLEAST8 "x"
233 # if !defined PRIXLEAST8 || @PRI_MACROS_BROKEN@
235 # define PRIXLEAST8 "X"
237 # if !defined PRIdLEAST16 || @PRI_MACROS_BROKEN@
239 # define PRIdLEAST16 "d"
241 # if !defined PRIiLEAST16 || @PRI_MACROS_BROKEN@
243 # define PRIiLEAST16 "i"
245 # if !defined PRIoLEAST16 || @PRI_MACROS_BROKEN@
247 # define PRIoLEAST16 "o"
249 # if !defined PRIuLEAST16 || @PRI_MACROS_BROKEN@
251 # define PRIuLEAST16 "u"
253 # if !defined PRIxLEAST16 || @PRI_MACROS_BROKEN@
255 # define PRIxLEAST16 "x"
257 # if !defined PRIXLEAST16 || @PRI_MACROS_BROKEN@
259 # define PRIXLEAST16 "X"
261 # if !defined PRIdLEAST32 || @PRI_MACROS_BROKEN@
263 # define PRIdLEAST32 "d"
265 # if !defined PRIiLEAST32 || @PRI_MACROS_BROKEN@
267 # define PRIiLEAST32 "i"
269 # if !defined PRIoLEAST32 || @PRI_MACROS_BROKEN@
271 # define PRIoLEAST32 "o"
273 # if !defined PRIuLEAST32 || @PRI_MACROS_BROKEN@
275 # define PRIuLEAST32 "u"
277 # if !defined PRIxLEAST32 || @PRI_MACROS_BROKEN@
279 # define PRIxLEAST32 "x"
281 # if !defined PRIXLEAST32 || @PRI_MACROS_BROKEN@
283 # define PRIXLEAST32 "X"
286 # if !defined PRIdLEAST64 || @PRI_MACROS_BROKEN@
288 # define PRIdLEAST64 PRId64
290 # if !defined PRIiLEAST64 || @PRI_MACROS_BROKEN@
292 # define PRIiLEAST64 PRIi64
296 # if !defined PRIoLEAST64 || @PRI_MACROS_BROKEN@
298 # define PRIoLEAST64 PRIo64
300 # if !defined PRIuLEAST64 || @PRI_MACROS_BROKEN@
302 # define PRIuLEAST64 PRIu64
304 # if !defined PRIxLEAST64 || @PRI_MACROS_BROKEN@
306 # define PRIxLEAST64 PRIx64
308 # if !defined PRIXLEAST64 || @PRI_MACROS_BROKEN@
310 # define PRIXLEAST64 PRIX64
314 # if !defined PRIdFAST8 || @PRI_MACROS_BROKEN@
316 # if INT_FAST8_MAX > INT32_MAX
317 # define PRIdFAST8 PRId64
319 # define PRIdFAST8 "d"
322 # if !defined PRIiFAST8 || @PRI_MACROS_BROKEN@
324 # if INT_FAST8_MAX > INT32_MAX
325 # define PRIiFAST8 PRIi64
327 # define PRIiFAST8 "i"
330 # if !defined PRIoFAST8 || @PRI_MACROS_BROKEN@
332 # if UINT_FAST8_MAX > UINT32_MAX
333 # define PRIoFAST8 PRIo64
335 # define PRIoFAST8 "o"
338 # if !defined PRIuFAST8 || @PRI_MACROS_BROKEN@
340 # if UINT_FAST8_MAX > UINT32_MAX
341 # define PRIuFAST8 PRIu64
343 # define PRIuFAST8 "u"
346 # if !defined PRIxFAST8 || @PRI_MACROS_BROKEN@
348 # if UINT_FAST8_MAX > UINT32_MAX
349 # define PRIxFAST8 PRIx64
351 # define PRIxFAST8 "x"
354 # if !defined PRIXFAST8 || @PRI_MACROS_BROKEN@
356 # if UINT_FAST8_MAX > UINT32_MAX
357 # define PRIXFAST8 PRIX64
359 # define PRIXFAST8 "X"
362 # if !defined PRIdFAST16 || @PRI_MACROS_BROKEN@
364 # if INT_FAST16_MAX > INT32_MAX
365 # define PRIdFAST16 PRId64
367 # define PRIdFAST16 "d"
370 # if !defined PRIiFAST16 || @PRI_MACROS_BROKEN@
372 # if INT_FAST16_MAX > INT32_MAX
373 # define PRIiFAST16 PRIi64
375 # define PRIiFAST16 "i"
378 # if !defined PRIoFAST16 || @PRI_MACROS_BROKEN@
380 # if UINT_FAST16_MAX > UINT32_MAX
381 # define PRIoFAST16 PRIo64
383 # define PRIoFAST16 "o"
386 # if !defined PRIuFAST16 || @PRI_MACROS_BROKEN@
388 # if UINT_FAST16_MAX > UINT32_MAX
389 # define PRIuFAST16 PRIu64
391 # define PRIuFAST16 "u"
394 # if !defined PRIxFAST16 || @PRI_MACROS_BROKEN@
396 # if UINT_FAST16_MAX > UINT32_MAX
397 # define PRIxFAST16 PRIx64
399 # define PRIxFAST16 "x"
402 # if !defined PRIXFAST16 || @PRI_MACROS_BROKEN@
404 # if UINT_FAST16_MAX > UINT32_MAX
405 # define PRIXFAST16 PRIX64
407 # define PRIXFAST16 "X"
410 # if !defined PRIdFAST32 || @PRI_MACROS_BROKEN@
412 # if INT_FAST32_MAX > INT32_MAX
413 # define PRIdFAST32 PRId64
415 # define PRIdFAST32 "d"
418 # if !defined PRIiFAST32 || @PRI_MACROS_BROKEN@
420 # if INT_FAST32_MAX > INT32_MAX
421 # define PRIiFAST32 PRIi64
423 # define PRIiFAST32 "i"
426 # if !defined PRIoFAST32 || @PRI_MACROS_BROKEN@
428 # if UINT_FAST32_MAX > UINT32_MAX
429 # define PRIoFAST32 PRIo64
431 # define PRIoFAST32 "o"
434 # if !defined PRIuFAST32 || @PRI_MACROS_BROKEN@
436 # if UINT_FAST32_MAX > UINT32_MAX
437 # define PRIuFAST32 PRIu64
439 # define PRIuFAST32 "u"
442 # if !defined PRIxFAST32 || @PRI_MACROS_BROKEN@
444 # if UINT_FAST32_MAX > UINT32_MAX
445 # define PRIxFAST32 PRIx64
447 # define PRIxFAST32 "x"
450 # if !defined PRIXFAST32 || @PRI_MACROS_BROKEN@
452 # if UINT_FAST32_MAX > UINT32_MAX
453 # define PRIXFAST32 PRIX64
455 # define PRIXFAST32 "X"
459 # if !defined PRIdFAST64 || @PRI_MACROS_BROKEN@
461 # define PRIdFAST64 PRId64
463 # if !defined PRIiFAST64 || @PRI_MACROS_BROKEN@
465 # define PRIiFAST64 PRIi64
469 # if !defined PRIoFAST64 || @PRI_MACROS_BROKEN@
471 # define PRIoFAST64 PRIo64
473 # if !defined PRIuFAST64 || @PRI_MACROS_BROKEN@
475 # define PRIuFAST64 PRIu64
477 # if !defined PRIxFAST64 || @PRI_MACROS_BROKEN@
479 # define PRIxFAST64 PRIx64
481 # if !defined PRIXFAST64 || @PRI_MACROS_BROKEN@
483 # define PRIXFAST64 PRIX64
487 # if !defined PRIdMAX || @PRI_MACROS_BROKEN@
489 # if @INT32_MAX_LT_INTMAX_MAX@
490 # define PRIdMAX PRId64
492 # define PRIdMAX "ld"
495 # if !defined PRIiMAX || @PRI_MACROS_BROKEN@
497 # if @INT32_MAX_LT_INTMAX_MAX@
498 # define PRIiMAX PRIi64
500 # define PRIiMAX "li"
503 # if !defined PRIoMAX || @PRI_MACROS_BROKEN@
505 # if @UINT32_MAX_LT_UINTMAX_MAX@
506 # define PRIoMAX PRIo64
508 # define PRIoMAX "lo"
511 # if !defined PRIuMAX || @PRI_MACROS_BROKEN@
513 # if @UINT32_MAX_LT_UINTMAX_MAX@
514 # define PRIuMAX PRIu64
516 # define PRIuMAX "lu"
519 # if !defined PRIxMAX || @PRI_MACROS_BROKEN@
521 # if @UINT32_MAX_LT_UINTMAX_MAX@
522 # define PRIxMAX PRIx64
524 # define PRIxMAX "lx"
527 # if !defined PRIXMAX || @PRI_MACROS_BROKEN@
529 # if @UINT32_MAX_LT_UINTMAX_MAX@
530 # define PRIXMAX PRIX64
532 # define PRIXMAX "lX"
536 # if !defined PRIdPTR || @PRI_MACROS_BROKEN@
539 # define PRIdPTR @PRIPTR_PREFIX@ "d"
542 # if !defined PRIiPTR || @PRI_MACROS_BROKEN@
545 # define PRIiPTR @PRIPTR_PREFIX@ "i"
548 # if !defined PRIoPTR || @PRI_MACROS_BROKEN@
551 # define PRIoPTR @PRIPTR_PREFIX@ "o"
554 # if !defined PRIuPTR || @PRI_MACROS_BROKEN@
557 # define PRIuPTR @PRIPTR_PREFIX@ "u"
560 # if !defined PRIxPTR || @PRI_MACROS_BROKEN@
563 # define PRIxPTR @PRIPTR_PREFIX@ "x"
566 # if !defined PRIXPTR || @PRI_MACROS_BROKEN@
569 # define PRIXPTR @PRIPTR_PREFIX@ "X"
573 # if !defined SCNd8 || @PRI_MACROS_BROKEN@
579 # if !defined SCNi8 || @PRI_MACROS_BROKEN@
585 # if !defined SCNo8 || @PRI_MACROS_BROKEN@
591 # if !defined SCNu8 || @PRI_MACROS_BROKEN@
597 # if !defined SCNx8 || @PRI_MACROS_BROKEN@
603 # if !defined SCNd16 || @PRI_MACROS_BROKEN@
609 # if !defined SCNi16 || @PRI_MACROS_BROKEN@
615 # if !defined SCNo16 || @PRI_MACROS_BROKEN@
621 # if !defined SCNu16 || @PRI_MACROS_BROKEN@
627 # if !defined SCNx16 || @PRI_MACROS_BROKEN@
633 # if !defined SCNd32 || @PRI_MACROS_BROKEN@
639 # if !defined SCNi32 || @PRI_MACROS_BROKEN@
645 # if !defined SCNo32 || @PRI_MACROS_BROKEN@
651 # if !defined SCNu32 || @PRI_MACROS_BROKEN@
657 # if !defined SCNx32 || @PRI_MACROS_BROKEN@
664 # if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @INT64_MAX_EQ_LONG_MAX@)
665 # define _SCN64_PREFIX "l"
666 # elif defined _MSC_VER || defined __MINGW32__
667 # define _SCN64_PREFIX "I64"
668 # elif @HAVE_LONG_LONG_INT@ && LONG_MAX >> 30 == 1
669 # define _SCN64_PREFIX _LONG_LONG_FORMAT_PREFIX
671 # if !defined SCNd64 || @PRI_MACROS_BROKEN@
673 # define SCNd64 _SCN64_PREFIX "d"
675 # if !defined SCNi64 || @PRI_MACROS_BROKEN@
677 # define SCNi64 _SCN64_PREFIX "i"
681 # if (@APPLE_UNIVERSAL_BUILD@ ? _LP64 : @UINT64_MAX_EQ_ULONG_MAX@)
682 # define _SCNu64_PREFIX "l"
683 # elif defined _MSC_VER || defined __MINGW32__
684 # define _SCNu64_PREFIX "I64"
685 # elif @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
686 # define _SCNu64_PREFIX _LONG_LONG_FORMAT_PREFIX
688 # if !defined SCNo64 || @PRI_MACROS_BROKEN@
690 # define SCNo64 _SCNu64_PREFIX "o"
692 # if !defined SCNu64 || @PRI_MACROS_BROKEN@
694 # define SCNu64 _SCNu64_PREFIX "u"
696 # if !defined SCNx64 || @PRI_MACROS_BROKEN@
698 # define SCNx64 _SCNu64_PREFIX "x"
702 # if !defined SCNdLEAST8 || @PRI_MACROS_BROKEN@
704 # define SCNdLEAST8 "hhd"
706 # if !defined SCNiLEAST8 || @PRI_MACROS_BROKEN@
708 # define SCNiLEAST8 "hhi"
710 # if !defined SCNoLEAST8 || @PRI_MACROS_BROKEN@
712 # define SCNoLEAST8 "hho"
714 # if !defined SCNuLEAST8 || @PRI_MACROS_BROKEN@
716 # define SCNuLEAST8 "hhu"
718 # if !defined SCNxLEAST8 || @PRI_MACROS_BROKEN@
720 # define SCNxLEAST8 "hhx"
722 # if !defined SCNdLEAST16 || @PRI_MACROS_BROKEN@
724 # define SCNdLEAST16 "hd"
726 # if !defined SCNiLEAST16 || @PRI_MACROS_BROKEN@
728 # define SCNiLEAST16 "hi"
730 # if !defined SCNoLEAST16 || @PRI_MACROS_BROKEN@
732 # define SCNoLEAST16 "ho"
734 # if !defined SCNuLEAST16 || @PRI_MACROS_BROKEN@
736 # define SCNuLEAST16 "hu"
738 # if !defined SCNxLEAST16 || @PRI_MACROS_BROKEN@
740 # define SCNxLEAST16 "hx"
742 # if !defined SCNdLEAST32 || @PRI_MACROS_BROKEN@
744 # define SCNdLEAST32 "d"
746 # if !defined SCNiLEAST32 || @PRI_MACROS_BROKEN@
748 # define SCNiLEAST32 "i"
750 # if !defined SCNoLEAST32 || @PRI_MACROS_BROKEN@
752 # define SCNoLEAST32 "o"
754 # if !defined SCNuLEAST32 || @PRI_MACROS_BROKEN@
756 # define SCNuLEAST32 "u"
758 # if !defined SCNxLEAST32 || @PRI_MACROS_BROKEN@
760 # define SCNxLEAST32 "x"
763 # if !defined SCNdLEAST64 || @PRI_MACROS_BROKEN@
765 # define SCNdLEAST64 SCNd64
767 # if !defined SCNiLEAST64 || @PRI_MACROS_BROKEN@
769 # define SCNiLEAST64 SCNi64
773 # if !defined SCNoLEAST64 || @PRI_MACROS_BROKEN@
775 # define SCNoLEAST64 SCNo64
777 # if !defined SCNuLEAST64 || @PRI_MACROS_BROKEN@
779 # define SCNuLEAST64 SCNu64
781 # if !defined SCNxLEAST64 || @PRI_MACROS_BROKEN@
783 # define SCNxLEAST64 SCNx64
787 # if !defined SCNdFAST8 || @PRI_MACROS_BROKEN@
789 # if INT_FAST8_MAX > INT32_MAX
790 # define SCNdFAST8 SCNd64
791 # elif INT_FAST8_MAX == 0x7fff
792 # define SCNdFAST8 "hd"
793 # elif INT_FAST8_MAX == 0x7f
794 # define SCNdFAST8 "hhd"
796 # define SCNdFAST8 "d"
799 # if !defined SCNiFAST8 || @PRI_MACROS_BROKEN@
801 # if INT_FAST8_MAX > INT32_MAX
802 # define SCNiFAST8 SCNi64
803 # elif INT_FAST8_MAX == 0x7fff
804 # define SCNiFAST8 "hi"
805 # elif INT_FAST8_MAX == 0x7f
806 # define SCNiFAST8 "hhi"
808 # define SCNiFAST8 "i"
811 # if !defined SCNoFAST8 || @PRI_MACROS_BROKEN@
813 # if UINT_FAST8_MAX > UINT32_MAX
814 # define SCNoFAST8 SCNo64
815 # elif UINT_FAST8_MAX == 0xffff
816 # define SCNoFAST8 "ho"
817 # elif UINT_FAST8_MAX == 0xff
818 # define SCNoFAST8 "hho"
820 # define SCNoFAST8 "o"
823 # if !defined SCNuFAST8 || @PRI_MACROS_BROKEN@
825 # if UINT_FAST8_MAX > UINT32_MAX
826 # define SCNuFAST8 SCNu64
827 # elif UINT_FAST8_MAX == 0xffff
828 # define SCNuFAST8 "hu"
829 # elif UINT_FAST8_MAX == 0xff
830 # define SCNuFAST8 "hhu"
832 # define SCNuFAST8 "u"
835 # if !defined SCNxFAST8 || @PRI_MACROS_BROKEN@
837 # if UINT_FAST8_MAX > UINT32_MAX
838 # define SCNxFAST8 SCNx64
839 # elif UINT_FAST8_MAX == 0xffff
840 # define SCNxFAST8 "hx"
841 # elif UINT_FAST8_MAX == 0xff
842 # define SCNxFAST8 "hhx"
844 # define SCNxFAST8 "x"
847 # if !defined SCNdFAST16 || @PRI_MACROS_BROKEN@
849 # if INT_FAST16_MAX > INT32_MAX
850 # define SCNdFAST16 SCNd64
851 # elif INT_FAST16_MAX == 0x7fff
852 # define SCNdFAST16 "hd"
854 # define SCNdFAST16 "d"
857 # if !defined SCNiFAST16 || @PRI_MACROS_BROKEN@
859 # if INT_FAST16_MAX > INT32_MAX
860 # define SCNiFAST16 SCNi64
861 # elif INT_FAST16_MAX == 0x7fff
862 # define SCNiFAST16 "hi"
864 # define SCNiFAST16 "i"
867 # if !defined SCNoFAST16 || @PRI_MACROS_BROKEN@
869 # if UINT_FAST16_MAX > UINT32_MAX
870 # define SCNoFAST16 SCNo64
871 # elif UINT_FAST16_MAX == 0xffff
872 # define SCNoFAST16 "ho"
874 # define SCNoFAST16 "o"
877 # if !defined SCNuFAST16 || @PRI_MACROS_BROKEN@
879 # if UINT_FAST16_MAX > UINT32_MAX
880 # define SCNuFAST16 SCNu64
881 # elif UINT_FAST16_MAX == 0xffff
882 # define SCNuFAST16 "hu"
884 # define SCNuFAST16 "u"
887 # if !defined SCNxFAST16 || @PRI_MACROS_BROKEN@
889 # if UINT_FAST16_MAX > UINT32_MAX
890 # define SCNxFAST16 SCNx64
891 # elif UINT_FAST16_MAX == 0xffff
892 # define SCNxFAST16 "hx"
894 # define SCNxFAST16 "x"
897 # if !defined SCNdFAST32 || @PRI_MACROS_BROKEN@
899 # if INT_FAST32_MAX > INT32_MAX
900 # define SCNdFAST32 SCNd64
902 # define SCNdFAST32 "d"
905 # if !defined SCNiFAST32 || @PRI_MACROS_BROKEN@
907 # if INT_FAST32_MAX > INT32_MAX
908 # define SCNiFAST32 SCNi64
910 # define SCNiFAST32 "i"
913 # if !defined SCNoFAST32 || @PRI_MACROS_BROKEN@
915 # if UINT_FAST32_MAX > UINT32_MAX
916 # define SCNoFAST32 SCNo64
918 # define SCNoFAST32 "o"
921 # if !defined SCNuFAST32 || @PRI_MACROS_BROKEN@
923 # if UINT_FAST32_MAX > UINT32_MAX
924 # define SCNuFAST32 SCNu64
926 # define SCNuFAST32 "u"
929 # if !defined SCNxFAST32 || @PRI_MACROS_BROKEN@
931 # if UINT_FAST32_MAX > UINT32_MAX
932 # define SCNxFAST32 SCNx64
934 # define SCNxFAST32 "x"
938 # if !defined SCNdFAST64 || @PRI_MACROS_BROKEN@
940 # define SCNdFAST64 SCNd64
942 # if !defined SCNiFAST64 || @PRI_MACROS_BROKEN@
944 # define SCNiFAST64 SCNi64
948 # if !defined SCNoFAST64 || @PRI_MACROS_BROKEN@
950 # define SCNoFAST64 SCNo64
952 # if !defined SCNuFAST64 || @PRI_MACROS_BROKEN@
954 # define SCNuFAST64 SCNu64
956 # if !defined SCNxFAST64 || @PRI_MACROS_BROKEN@
958 # define SCNxFAST64 SCNx64
962 # if !defined SCNdMAX || @PRI_MACROS_BROKEN@
964 # if @INT32_MAX_LT_INTMAX_MAX@
965 # define SCNdMAX SCNd64
967 # define SCNdMAX "ld"
970 # if !defined SCNiMAX || @PRI_MACROS_BROKEN@
972 # if @INT32_MAX_LT_INTMAX_MAX@
973 # define SCNiMAX SCNi64
975 # define SCNiMAX "li"
978 # if !defined SCNoMAX || @PRI_MACROS_BROKEN@
980 # if @UINT32_MAX_LT_UINTMAX_MAX@
981 # define SCNoMAX SCNo64
983 # define SCNoMAX "lo"
986 # if !defined SCNuMAX || @PRI_MACROS_BROKEN@
988 # if @UINT32_MAX_LT_UINTMAX_MAX@
989 # define SCNuMAX SCNu64
991 # define SCNuMAX "lu"
994 # if !defined SCNxMAX || @PRI_MACROS_BROKEN@
996 # if @UINT32_MAX_LT_UINTMAX_MAX@
997 # define SCNxMAX SCNx64
999 # define SCNxMAX "lx"
1003 # if !defined SCNdPTR || @PRI_MACROS_BROKEN@
1006 # define SCNdPTR @PRIPTR_PREFIX@ "d"
1009 # if !defined SCNiPTR || @PRI_MACROS_BROKEN@
1012 # define SCNiPTR @PRIPTR_PREFIX@ "i"
1015 # if !defined SCNoPTR || @PRI_MACROS_BROKEN@
1018 # define SCNoPTR @PRIPTR_PREFIX@ "o"
1021 # if !defined SCNuPTR || @PRI_MACROS_BROKEN@
1024 # define SCNuPTR @PRIPTR_PREFIX@ "u"
1027 # if !defined SCNxPTR || @PRI_MACROS_BROKEN@
1030 # define SCNxPTR @PRIPTR_PREFIX@ "x"
1036 /* 7.8.2 Functions for greatest-width integer types */
1042 #if @GNULIB_IMAXABS@
1043 # if !@HAVE_DECL_IMAXABS@
1044 extern intmax_t imaxabs (intmax_t);
1046 #elif defined GNULIB_POSIXCHECK
1048 # define imaxabs(a) \
1049 (GL_LINK_WARNING ("imaxabs is unportable - " \
1050 "use gnulib module imaxabs for portability"), \
1054 #if @GNULIB_IMAXDIV@
1055 # if !@HAVE_DECL_IMAXDIV@
1056 typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
1057 extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
1059 #elif defined GNULIB_POSIXCHECK
1061 # define imaxdiv(a,b) \
1062 (GL_LINK_WARNING ("imaxdiv is unportable - " \
1063 "use gnulib module imaxdiv for portability"), \
1067 #if @GNULIB_STRTOIMAX@
1068 # if !@HAVE_DECL_STRTOIMAX@
1069 extern intmax_t strtoimax (const char *, char **, int);
1071 #elif defined GNULIB_POSIXCHECK
1073 # define strtoimax(p,e,b) \
1074 (GL_LINK_WARNING ("strtoimax is unportable - " \
1075 "use gnulib module strtoimax for portability"), \
1076 strtoimax (p, e, b))
1079 #if @GNULIB_STRTOUMAX@
1080 # if !@HAVE_DECL_STRTOUMAX@
1081 extern uintmax_t strtoumax (const char *, char **, int);
1083 #elif defined GNULIB_POSIXCHECK
1085 # define strtoumax(p,e,b) \
1086 (GL_LINK_WARNING ("strtoumax is unportable - " \
1087 "use gnulib module strtoumax for portability"), \
1088 strtoumax (p, e, b))
1091 /* Don't bother defining or declaring wcstoimax and wcstoumax, since
1092 wide-character functions like this are hardly ever useful. */
1098 #endif /* !defined INTTYPES_H && !defined _GL_JUST_INCLUDE_SYSTEM_INTTYPES_H */