stdint.h 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. /*
  2. * Copyright (c) mlibc & plct lab
  3. *
  4. * SPDX-License-Identifier: MIT
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2023/06/16 bernard the first verison
  9. */
  10. #ifndef MLIBC_STDINT_H__
  11. #define MLIBC_STDINT_H__
  12. typedef signed char int8_t;
  13. typedef signed short int16_t;
  14. typedef signed int int32_t;
  15. typedef signed long long int64_t;
  16. typedef unsigned char uint8_t;
  17. typedef unsigned short uint16_t;
  18. typedef unsigned int uint32_t;
  19. typedef unsigned long long uint64_t;
  20. typedef unsigned long uintptr_t;
  21. typedef signed long intptr_t;
  22. #define INT8_MIN (-1-0x7f)
  23. #define INT16_MIN (-1-0x7fff)
  24. #define INT32_MIN (-1-0x7fffffff)
  25. #define INT64_MIN (-1-0x7fffffffffffffff)
  26. #define INT8_MAX (0x7f)
  27. #define INT16_MAX (0x7fff)
  28. #define INT32_MAX (0x7fffffff)
  29. #define INT64_MAX (0x7fffffffffffffff)
  30. #define UINT8_MAX (0xff)
  31. #define UINT16_MAX (0xffff)
  32. #define UINT32_MAX (0xffffffffu)
  33. #define UINT64_MAX (0xffffffffffffffffu)
  34. #if (defined(__GNUC__) && (__SIZEOF_POINTER__ == 8))
  35. /* for 64bit */
  36. #define INTPTR_MIN INT64_MIN
  37. #define INTPTR_MAX INT64_MAX
  38. #define UINTPTR_MAX UINT64_MAX
  39. #define PTRDIFF_MIN INT64_MIN
  40. #define PTRDIFF_MAX INT64_MAX
  41. #define SIZE_MAX UINT64_MAX
  42. #else
  43. /* for 32bit (default) */
  44. #define INTPTR_MIN INT32_MIN
  45. #define INTPTR_MAX INT32_MAX
  46. #define UINTPTR_MAX UINT32_MAX
  47. #define PTRDIFF_MIN INT32_MIN
  48. #define PTRDIFF_MAX INT32_MAX
  49. #define SIZE_MAX UINT32_MAX
  50. #endif /* __GNUC__ */
  51. #endif /*MLIBC_STDINT_H__*/