1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // test <cinttypes>
10
11 #include <cinttypes>
12 #include <type_traits>
13
14 #include "test_macros.h"
15
16 #ifndef INT8_MIN
17 #error INT8_MIN not defined
18 #endif
19
20 #ifndef INT16_MIN
21 #error INT16_MIN not defined
22 #endif
23
24 #ifndef INT32_MIN
25 #error INT32_MIN not defined
26 #endif
27
28 #ifndef INT64_MIN
29 #error INT64_MIN not defined
30 #endif
31
32 #ifndef INT8_MAX
33 #error INT8_MAX not defined
34 #endif
35
36 #ifndef INT16_MAX
37 #error INT16_MAX not defined
38 #endif
39
40 #ifndef INT32_MAX
41 #error INT32_MAX not defined
42 #endif
43
44 #ifndef INT64_MAX
45 #error INT64_MAX not defined
46 #endif
47
48 #ifndef UINT8_MAX
49 #error UINT8_MAX not defined
50 #endif
51
52 #ifndef UINT16_MAX
53 #error UINT16_MAX not defined
54 #endif
55
56 #ifndef UINT32_MAX
57 #error UINT32_MAX not defined
58 #endif
59
60 #ifndef UINT64_MAX
61 #error UINT64_MAX not defined
62 #endif
63
64 #ifndef INT_LEAST8_MIN
65 #error INT_LEAST8_MIN not defined
66 #endif
67
68 #ifndef INT_LEAST16_MIN
69 #error INT_LEAST16_MIN not defined
70 #endif
71
72 #ifndef INT_LEAST32_MIN
73 #error INT_LEAST32_MIN not defined
74 #endif
75
76 #ifndef INT_LEAST64_MIN
77 #error INT_LEAST64_MIN not defined
78 #endif
79
80 #ifndef INT_LEAST8_MAX
81 #error INT_LEAST8_MAX not defined
82 #endif
83
84 #ifndef INT_LEAST16_MAX
85 #error INT_LEAST16_MAX not defined
86 #endif
87
88 #ifndef INT_LEAST32_MAX
89 #error INT_LEAST32_MAX not defined
90 #endif
91
92 #ifndef INT_LEAST64_MAX
93 #error INT_LEAST64_MAX not defined
94 #endif
95
96 #ifndef UINT_LEAST8_MAX
97 #error UINT_LEAST8_MAX not defined
98 #endif
99
100 #ifndef UINT_LEAST16_MAX
101 #error UINT_LEAST16_MAX not defined
102 #endif
103
104 #ifndef UINT_LEAST32_MAX
105 #error UINT_LEAST32_MAX not defined
106 #endif
107
108 #ifndef UINT_LEAST64_MAX
109 #error UINT_LEAST64_MAX not defined
110 #endif
111
112 #ifndef INT_FAST8_MIN
113 #error INT_FAST8_MIN not defined
114 #endif
115
116 #ifndef INT_FAST16_MIN
117 #error INT_FAST16_MIN not defined
118 #endif
119
120 #ifndef INT_FAST32_MIN
121 #error INT_FAST32_MIN not defined
122 #endif
123
124 #ifndef INT_FAST64_MIN
125 #error INT_FAST64_MIN not defined
126 #endif
127
128 #ifndef INT_FAST8_MAX
129 #error INT_FAST8_MAX not defined
130 #endif
131
132 #ifndef INT_FAST16_MAX
133 #error INT_FAST16_MAX not defined
134 #endif
135
136 #ifndef INT_FAST32_MAX
137 #error INT_FAST32_MAX not defined
138 #endif
139
140 #ifndef INT_FAST64_MAX
141 #error INT_FAST64_MAX not defined
142 #endif
143
144 #ifndef UINT_FAST8_MAX
145 #error UINT_FAST8_MAX not defined
146 #endif
147
148 #ifndef UINT_FAST16_MAX
149 #error UINT_FAST16_MAX not defined
150 #endif
151
152 #ifndef UINT_FAST32_MAX
153 #error UINT_FAST32_MAX not defined
154 #endif
155
156 #ifndef UINT_FAST64_MAX
157 #error UINT_FAST64_MAX not defined
158 #endif
159
160 #ifndef INTPTR_MIN
161 #error INTPTR_MIN not defined
162 #endif
163
164 #ifndef INTPTR_MAX
165 #error INTPTR_MAX not defined
166 #endif
167
168 #ifndef UINTPTR_MAX
169 #error UINTPTR_MAX not defined
170 #endif
171
172 #ifndef INTMAX_MIN
173 #error INTMAX_MIN not defined
174 #endif
175
176 #ifndef INTMAX_MAX
177 #error INTMAX_MAX not defined
178 #endif
179
180 #ifndef UINTMAX_MAX
181 #error UINTMAX_MAX not defined
182 #endif
183
184 #ifndef PTRDIFF_MIN
185 #error PTRDIFF_MIN not defined
186 #endif
187
188 #ifndef PTRDIFF_MAX
189 #error PTRDIFF_MAX not defined
190 #endif
191
192 #ifndef SIG_ATOMIC_MIN
193 #error SIG_ATOMIC_MIN not defined
194 #endif
195
196 #ifndef SIG_ATOMIC_MAX
197 #error SIG_ATOMIC_MAX not defined
198 #endif
199
200 #ifndef SIZE_MAX
201 #error SIZE_MAX not defined
202 #endif
203
204 #ifndef WCHAR_MIN
205 #error WCHAR_MIN not defined
206 #endif
207
208 #ifndef WCHAR_MAX
209 #error WCHAR_MAX not defined
210 #endif
211
212 #ifndef WINT_MIN
213 #error WINT_MIN not defined
214 #endif
215
216 #ifndef WINT_MAX
217 #error WINT_MAX not defined
218 #endif
219
220 #ifndef INT8_C
221 #error INT8_C not defined
222 #endif
223
224 #ifndef INT16_C
225 #error INT16_C not defined
226 #endif
227
228 #ifndef INT32_C
229 #error INT32_C not defined
230 #endif
231
232 #ifndef INT64_C
233 #error INT64_C not defined
234 #endif
235
236 #ifndef UINT8_C
237 #error UINT8_C not defined
238 #endif
239
240 #ifndef UINT16_C
241 #error UINT16_C not defined
242 #endif
243
244 #ifndef UINT32_C
245 #error UINT32_C not defined
246 #endif
247
248 #ifndef UINT64_C
249 #error UINT64_C not defined
250 #endif
251
252 #ifndef INTMAX_C
253 #error INTMAX_C not defined
254 #endif
255
256 #ifndef UINTMAX_C
257 #error UINTMAX_C not defined
258 #endif
259
260 #ifndef PRId8
261 #error PRId8 not defined
262 #endif
263
264 #ifndef PRId16
265 #error PRId16 not defined
266 #endif
267
268 #ifndef PRId32
269 #error PRId32 not defined
270 #endif
271
272 #ifndef PRId64
273 #error PRId64 not defined
274 #endif
275
276 #ifndef PRIdLEAST8
277 #error PRIdLEAST8 not defined
278 #endif
279
280 #ifndef PRIdLEAST16
281 #error PRIdLEAST16 not defined
282 #endif
283
284 #ifndef PRIdLEAST32
285 #error PRIdLEAST32 not defined
286 #endif
287
288 #ifndef PRIdLEAST64
289 #error PRIdLEAST64 not defined
290 #endif
291
292 #ifndef PRIdFAST8
293 #error PRIdFAST8 not defined
294 #endif
295
296 #ifndef PRIdFAST16
297 #error PRIdFAST16 not defined
298 #endif
299
300 #ifndef PRIdFAST32
301 #error PRIdFAST32 not defined
302 #endif
303
304 #ifndef PRIdFAST64
305 #error PRIdFAST64 not defined
306 #endif
307
308 #ifndef PRIdMAX
309 #error PRIdMAX not defined
310 #endif
311
312 #ifndef PRIdPTR
313 #error PRIdPTR not defined
314 #endif
315
316 #ifndef PRIi8
317 #error PRIi8 not defined
318 #endif
319
320 #ifndef PRIi16
321 #error PRIi16 not defined
322 #endif
323
324 #ifndef PRIi32
325 #error PRIi32 not defined
326 #endif
327
328 #ifndef PRIi64
329 #error PRIi64 not defined
330 #endif
331
332 #ifndef PRIiLEAST8
333 #error PRIiLEAST8 not defined
334 #endif
335
336 #ifndef PRIiLEAST16
337 #error PRIiLEAST16 not defined
338 #endif
339
340 #ifndef PRIiLEAST32
341 #error PRIiLEAST32 not defined
342 #endif
343
344 #ifndef PRIiLEAST64
345 #error PRIiLEAST64 not defined
346 #endif
347
348 #ifndef PRIiFAST8
349 #error PRIiFAST8 not defined
350 #endif
351
352 #ifndef PRIiFAST16
353 #error PRIiFAST16 not defined
354 #endif
355
356 #ifndef PRIiFAST32
357 #error PRIiFAST32 not defined
358 #endif
359
360 #ifndef PRIiFAST64
361 #error PRIiFAST64 not defined
362 #endif
363
364 #ifndef PRIiMAX
365 #error PRIiMAX not defined
366 #endif
367
368 #ifndef PRIiPTR
369 #error PRIiPTR not defined
370 #endif
371
372 #ifndef PRIo8
373 #error PRIo8 not defined
374 #endif
375
376 #ifndef PRIo16
377 #error PRIo16 not defined
378 #endif
379
380 #ifndef PRIo32
381 #error PRIo32 not defined
382 #endif
383
384 #ifndef PRIo64
385 #error PRIo64 not defined
386 #endif
387
388 #ifndef PRIoLEAST8
389 #error PRIoLEAST8 not defined
390 #endif
391
392 #ifndef PRIoLEAST16
393 #error PRIoLEAST16 not defined
394 #endif
395
396 #ifndef PRIoLEAST32
397 #error PRIoLEAST32 not defined
398 #endif
399
400 #ifndef PRIoLEAST64
401 #error PRIoLEAST64 not defined
402 #endif
403
404 #ifndef PRIoFAST8
405 #error PRIoFAST8 not defined
406 #endif
407
408 #ifndef PRIoFAST16
409 #error PRIoFAST16 not defined
410 #endif
411
412 #ifndef PRIoFAST32
413 #error PRIoFAST32 not defined
414 #endif
415
416 #ifndef PRIoFAST64
417 #error PRIoFAST64 not defined
418 #endif
419
420 #ifndef PRIoMAX
421 #error PRIoMAX not defined
422 #endif
423
424 #ifndef PRIoPTR
425 #error PRIoPTR not defined
426 #endif
427
428 #ifndef PRIu8
429 #error PRIu8 not defined
430 #endif
431
432 #ifndef PRIu16
433 #error PRIu16 not defined
434 #endif
435
436 #ifndef PRIu32
437 #error PRIu32 not defined
438 #endif
439
440 #ifndef PRIu64
441 #error PRIu64 not defined
442 #endif
443
444 #ifndef PRIuLEAST8
445 #error PRIuLEAST8 not defined
446 #endif
447
448 #ifndef PRIuLEAST16
449 #error PRIuLEAST16 not defined
450 #endif
451
452 #ifndef PRIuLEAST32
453 #error PRIuLEAST32 not defined
454 #endif
455
456 #ifndef PRIuLEAST64
457 #error PRIuLEAST64 not defined
458 #endif
459
460 #ifndef PRIuFAST8
461 #error PRIuFAST8 not defined
462 #endif
463
464 #ifndef PRIuFAST16
465 #error PRIuFAST16 not defined
466 #endif
467
468 #ifndef PRIuFAST32
469 #error PRIuFAST32 not defined
470 #endif
471
472 #ifndef PRIuFAST64
473 #error PRIuFAST64 not defined
474 #endif
475
476 #ifndef PRIuMAX
477 #error PRIuMAX not defined
478 #endif
479
480 #ifndef PRIuPTR
481 #error PRIuPTR not defined
482 #endif
483
484 #ifndef PRIx8
485 #error PRIx8 not defined
486 #endif
487
488 #ifndef PRIx16
489 #error PRIx16 not defined
490 #endif
491
492 #ifndef PRIx32
493 #error PRIx32 not defined
494 #endif
495
496 #ifndef PRIx64
497 #error PRIx64 not defined
498 #endif
499
500 #ifndef PRIxLEAST8
501 #error PRIxLEAST8 not defined
502 #endif
503
504 #ifndef PRIxLEAST16
505 #error PRIxLEAST16 not defined
506 #endif
507
508 #ifndef PRIxLEAST32
509 #error PRIxLEAST32 not defined
510 #endif
511
512 #ifndef PRIxLEAST64
513 #error PRIxLEAST64 not defined
514 #endif
515
516 #ifndef PRIxFAST8
517 #error PRIxFAST8 not defined
518 #endif
519
520 #ifndef PRIxFAST16
521 #error PRIxFAST16 not defined
522 #endif
523
524 #ifndef PRIxFAST32
525 #error PRIxFAST32 not defined
526 #endif
527
528 #ifndef PRIxFAST64
529 #error PRIxFAST64 not defined
530 #endif
531
532 #ifndef PRIxMAX
533 #error PRIxMAX not defined
534 #endif
535
536 #ifndef PRIxPTR
537 #error PRIxPTR not defined
538 #endif
539
540 #ifndef PRIX8
541 #error PRIX8 not defined
542 #endif
543
544 #ifndef PRIX16
545 #error PRIX16 not defined
546 #endif
547
548 #ifndef PRIX32
549 #error PRIX32 not defined
550 #endif
551
552 #ifndef PRIX64
553 #error PRIX64 not defined
554 #endif
555
556 #ifndef PRIXLEAST8
557 #error PRIXLEAST8 not defined
558 #endif
559
560 #ifndef PRIXLEAST16
561 #error PRIXLEAST16 not defined
562 #endif
563
564 #ifndef PRIXLEAST32
565 #error PRIXLEAST32 not defined
566 #endif
567
568 #ifndef PRIXLEAST64
569 #error PRIXLEAST64 not defined
570 #endif
571
572 #ifndef PRIXFAST8
573 #error PRIXFAST8 not defined
574 #endif
575
576 #ifndef PRIXFAST16
577 #error PRIXFAST16 not defined
578 #endif
579
580 #ifndef PRIXFAST32
581 #error PRIXFAST32 not defined
582 #endif
583
584 #ifndef PRIXFAST64
585 #error PRIXFAST64 not defined
586 #endif
587
588 #ifndef PRIXMAX
589 #error PRIXMAX not defined
590 #endif
591
592 #ifndef PRIXPTR
593 #error PRIXPTR not defined
594 #endif
595
596 #ifndef SCNd8
597 #error SCNd8 not defined
598 #endif
599
600 #ifndef SCNd16
601 #error SCNd16 not defined
602 #endif
603
604 #ifndef SCNd32
605 #error SCNd32 not defined
606 #endif
607
608 #ifndef SCNd64
609 #error SCNd64 not defined
610 #endif
611
612 #ifndef SCNdLEAST8
613 #error SCNdLEAST8 not defined
614 #endif
615
616 #ifndef SCNdLEAST16
617 #error SCNdLEAST16 not defined
618 #endif
619
620 #ifndef SCNdLEAST32
621 #error SCNdLEAST32 not defined
622 #endif
623
624 #ifndef SCNdLEAST64
625 #error SCNdLEAST64 not defined
626 #endif
627
628 #ifndef SCNdFAST8
629 #error SCNdFAST8 not defined
630 #endif
631
632 #ifndef SCNdFAST16
633 #error SCNdFAST16 not defined
634 #endif
635
636 #ifndef SCNdFAST32
637 #error SCNdFAST32 not defined
638 #endif
639
640 #ifndef SCNdFAST64
641 #error SCNdFAST64 not defined
642 #endif
643
644 #ifndef SCNdMAX
645 #error SCNdMAX not defined
646 #endif
647
648 #ifndef SCNdPTR
649 #error SCNdPTR not defined
650 #endif
651
652 #ifndef SCNi8
653 #error SCNi8 not defined
654 #endif
655
656 #ifndef SCNi16
657 #error SCNi16 not defined
658 #endif
659
660 #ifndef SCNi32
661 #error SCNi32 not defined
662 #endif
663
664 #ifndef SCNi64
665 #error SCNi64 not defined
666 #endif
667
668 #ifndef SCNiLEAST8
669 #error SCNiLEAST8 not defined
670 #endif
671
672 #ifndef SCNiLEAST16
673 #error SCNiLEAST16 not defined
674 #endif
675
676 #ifndef SCNiLEAST32
677 #error SCNiLEAST32 not defined
678 #endif
679
680 #ifndef SCNiLEAST64
681 #error SCNiLEAST64 not defined
682 #endif
683
684 #ifndef SCNiFAST8
685 #error SCNiFAST8 not defined
686 #endif
687
688 #ifndef SCNiFAST16
689 #error SCNiFAST16 not defined
690 #endif
691
692 #ifndef SCNiFAST32
693 #error SCNiFAST32 not defined
694 #endif
695
696 #ifndef SCNiFAST64
697 #error SCNiFAST64 not defined
698 #endif
699
700 #ifndef SCNiMAX
701 #error SCNiMAX not defined
702 #endif
703
704 #ifndef SCNiPTR
705 #error SCNiPTR not defined
706 #endif
707
708 #ifndef SCNo8
709 #error SCNo8 not defined
710 #endif
711
712 #ifndef SCNo16
713 #error SCNo16 not defined
714 #endif
715
716 #ifndef SCNo32
717 #error SCNo32 not defined
718 #endif
719
720 #ifndef SCNo64
721 #error SCNo64 not defined
722 #endif
723
724 #ifndef SCNoLEAST8
725 #error SCNoLEAST8 not defined
726 #endif
727
728 #ifndef SCNoLEAST16
729 #error SCNoLEAST16 not defined
730 #endif
731
732 #ifndef SCNoLEAST32
733 #error SCNoLEAST32 not defined
734 #endif
735
736 #ifndef SCNoLEAST64
737 #error SCNoLEAST64 not defined
738 #endif
739
740 #ifndef SCNoFAST8
741 #error SCNoFAST8 not defined
742 #endif
743
744 #ifndef SCNoFAST16
745 #error SCNoFAST16 not defined
746 #endif
747
748 #ifndef SCNoFAST32
749 #error SCNoFAST32 not defined
750 #endif
751
752 #ifndef SCNoFAST64
753 #error SCNoFAST64 not defined
754 #endif
755
756 #ifndef SCNoMAX
757 #error SCNoMAX not defined
758 #endif
759
760 #ifndef SCNoPTR
761 #error SCNoPTR not defined
762 #endif
763
764 #ifndef SCNu8
765 #error SCNu8 not defined
766 #endif
767
768 #ifndef SCNu16
769 #error SCNu16 not defined
770 #endif
771
772 #ifndef SCNu32
773 #error SCNu32 not defined
774 #endif
775
776 #ifndef SCNu64
777 #error SCNu64 not defined
778 #endif
779
780 #ifndef SCNuLEAST8
781 #error SCNuLEAST8 not defined
782 #endif
783
784 #ifndef SCNuLEAST16
785 #error SCNuLEAST16 not defined
786 #endif
787
788 #ifndef SCNuLEAST32
789 #error SCNuLEAST32 not defined
790 #endif
791
792 #ifndef SCNuLEAST64
793 #error SCNuLEAST64 not defined
794 #endif
795
796 #ifndef SCNuFAST8
797 #error SCNuFAST8 not defined
798 #endif
799
800 #ifndef SCNuFAST16
801 #error SCNuFAST16 not defined
802 #endif
803
804 #ifndef SCNuFAST32
805 #error SCNuFAST32 not defined
806 #endif
807
808 #ifndef SCNuFAST64
809 #error SCNuFAST64 not defined
810 #endif
811
812 #ifndef SCNuMAX
813 #error SCNuMAX not defined
814 #endif
815
816 #ifndef SCNuPTR
817 #error SCNuPTR not defined
818 #endif
819
820 #ifndef SCNx8
821 #error SCNx8 not defined
822 #endif
823
824 #ifndef SCNx16
825 #error SCNx16 not defined
826 #endif
827
828 #ifndef SCNx32
829 #error SCNx32 not defined
830 #endif
831
832 #ifndef SCNx64
833 #error SCNx64 not defined
834 #endif
835
836 #ifndef SCNxLEAST8
837 #error SCNxLEAST8 not defined
838 #endif
839
840 #ifndef SCNxLEAST16
841 #error SCNxLEAST16 not defined
842 #endif
843
844 #ifndef SCNxLEAST32
845 #error SCNxLEAST32 not defined
846 #endif
847
848 #ifndef SCNxLEAST64
849 #error SCNxLEAST64 not defined
850 #endif
851
852 #ifndef SCNxFAST8
853 #error SCNxFAST8 not defined
854 #endif
855
856 #ifndef SCNxFAST16
857 #error SCNxFAST16 not defined
858 #endif
859
860 #ifndef SCNxFAST32
861 #error SCNxFAST32 not defined
862 #endif
863
864 #ifndef SCNxFAST64
865 #error SCNxFAST64 not defined
866 #endif
867
868 #ifndef SCNxMAX
869 #error SCNxMAX not defined
870 #endif
871
872 #ifndef SCNxPTR
873 #error SCNxPTR not defined
874 #endif
875
test()876 template <class T> void test()
877 {
878 T t = 0;
879 ((void)t); // Prevent unused warning
880 }
881
main(int,char **)882 int main(int, char**)
883 {
884 test<std::int8_t >();
885 test<std::int16_t>();
886 test<std::int32_t>();
887 test<std::int64_t>();
888
889 test<std::uint8_t >();
890 test<std::uint16_t>();
891 test<std::uint32_t>();
892 test<std::uint64_t>();
893
894 test<std::int_least8_t >();
895 test<std::int_least16_t>();
896 test<std::int_least32_t>();
897 test<std::int_least64_t>();
898
899 test<std::uint_least8_t >();
900 test<std::uint_least16_t>();
901 test<std::uint_least32_t>();
902 test<std::uint_least64_t>();
903
904 test<std::int_fast8_t >();
905 test<std::int_fast16_t>();
906 test<std::int_fast32_t>();
907 test<std::int_fast64_t>();
908
909 test<std::uint_fast8_t >();
910 test<std::uint_fast16_t>();
911 test<std::uint_fast32_t>();
912 test<std::uint_fast64_t>();
913
914 test<std::intptr_t >();
915 test<std::uintptr_t>();
916 test<std::intmax_t >();
917 test<std::uintmax_t>();
918
919 {
920 std::imaxdiv_t i1 = {};
921 ((void)i1); // Prevent unused warning
922 }
923
924 std::intmax_t i = 0;
925 ((void)i); // Prevent unused warning
926 static_assert((std::is_same<decltype(std::imaxabs(i)), std::intmax_t>::value), "");
927 static_assert((std::is_same<decltype(std::imaxdiv(i, i)), std::imaxdiv_t>::value), "");
928 static_assert((std::is_same<decltype(std::strtoimax("", (char**)0, 0)), std::intmax_t>::value), "");
929 static_assert((std::is_same<decltype(std::strtoumax("", (char**)0, 0)), std::uintmax_t>::value), "");
930 static_assert((std::is_same<decltype(std::wcstoimax(L"", (wchar_t**)0, 0)), std::intmax_t>::value), "");
931 static_assert((std::is_same<decltype(std::wcstoumax(L"", (wchar_t**)0, 0)), std::uintmax_t>::value), "");
932
933 return 0;
934 }
935