inttypes.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. /*
  2. * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <bits/stdint.h>
  8. #include <sys/cdefs.h>
  9. __BEGIN_DECLS
  10. #ifndef __x86_64__
  11. # define __PRI64_PREFIX "ll"
  12. # define __PRIPTR_PREFIX
  13. #else
  14. # define __PRI64_PREFIX "l"
  15. # define __PRIPTR_PREFIX "l"
  16. #endif
  17. #define PRId8 "d"
  18. #define PRId16 "d"
  19. #define PRId32 "d"
  20. #define PRId64 __PRI64_PREFIX "d"
  21. #define PRIdPTR __PRIPTR_PREFIX "d"
  22. #define PRIdMAX __PRI64_PREFIX "d"
  23. #define PRIi8 "d"
  24. #define PRIi16 "d"
  25. #define PRIi32 "d"
  26. #define PRIi64 __PRI64_PREFIX "d"
  27. #define PRIiPTR __PRIPTR_PREFIX "d"
  28. #define PRIiMAX __PRI64_PREFIX "d"
  29. #define PRIo8 "o"
  30. #define PRIo16 "o"
  31. #define PRIo32 "o"
  32. #define PRIo64 __PRI64_PREFIX "o"
  33. #define PRIoPTR __PRIPTR_PREFIX "o"
  34. #define PRIoMAX __PRI64_PREFIX "o"
  35. #define PRIu8 "u"
  36. #define PRIu16 "u"
  37. #define PRIu32 "u"
  38. #define PRIu64 __PRI64_PREFIX "u"
  39. #define PRIuPTR __PRIPTR_PREFIX "u"
  40. #define PRIuMAX __PRI64_PREFIX "u"
  41. #define PRIx8 "x"
  42. #define PRIx16 "x"
  43. #define PRIx32 "x"
  44. #define PRIx64 __PRI64_PREFIX "x"
  45. #define PRIxPTR __PRIPTR_PREFIX "x"
  46. #define PRIxMAX __PRI64_PREFIX "x"
  47. #define PRIX8 "X"
  48. #define PRIX16 "X"
  49. #define PRIX32 "X"
  50. #define PRIX64 __PRI64_PREFIX "X"
  51. #define PRIXPTR __PRIPTR_PREFIX "X"
  52. #define PRIXMAX __PRI64_PREFIX "X"
  53. #define SCNd8 "hhd"
  54. #define SCNd16 "hd"
  55. #define SCNd32 "ld"
  56. #define SCNd64 __PRI64_PREFIX "d"
  57. #define SCNdPTR __PRIPTR_PREFIX "d"
  58. #define SCNdMAX __PRI64_PREFIX "d"
  59. #define SCNi8 "hhi"
  60. #define SCNi16 "hi"
  61. #define SCNi32 "li"
  62. #define SCNi64 __PRI64_PREFIX "i"
  63. #define SCNiPTR __PRIPTR_PREFIX "i"
  64. #define SCNiMAX __PRI64_PREFIX "i"
  65. #define SCNu8 "hhu"
  66. #define SCNu16 "hu"
  67. #define SCNu32 "lu"
  68. #define SCNu64 __PRI64_PREFIX "u"
  69. #define SCNuPTR __PRIPTR_PREFIX "u"
  70. #define SCNuMAX __PRI64_PREFIX "u"
  71. #define SCNo8 "hho"
  72. #define SCNo16 "ho"
  73. #define SCNo32 "lo"
  74. #define SCNo64 __PRI64_PREFIX "o"
  75. #define SCNoPTR __PRIPTR_PREFIX "o"
  76. #define SCNoMAX __PRI64_PREFIX "o"
  77. #define SCNx8 "hhx"
  78. #define SCNx16 "hx"
  79. #define SCNx32 "lx"
  80. #define SCNx64 __PRI64_PREFIX "x"
  81. #define SCNxPTR __PRIPTR_PREFIX "x"
  82. #define SCNxMAX __PRI64_PREFIX "x"
  83. typedef struct imaxdiv_t {
  84. intmax_t quot;
  85. intmax_t rem;
  86. } imaxdiv_t;
  87. imaxdiv_t imaxdiv(intmax_t, intmax_t);
  88. intmax_t strtoimax(char const*, char** endptr, int base);
  89. uintmax_t strtoumax(char const*, char** endptr, int base);
  90. __END_DECLS