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