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
876template <class T> void test()
877{
878 T t = 0;
879 ((void)t); // Prevent unused warning
880}
881
882int 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#ifndef TEST_HAS_NO_WIDE_CHARACTERS
931 static_assert((std::is_same<decltype(std::wcstoimax(L"", (wchar_t**)0, 0)), std::intmax_t>::value), "");
932 static_assert((std::is_same<decltype(std::wcstoumax(L"", (wchar_t**)0, 0)), std::uintmax_t>::value), "");
933#endif
934
935 return 0;
936}
937

source code of libcxx/test/std/input.output/file.streams/c.files/cinttypes.pass.cpp