Inttypes.h

From 탱이의 잡동사니
Jump to navigation Jump to search

Overview

inttypes.h 내용 정리

Basic

한번씩 intmax_t 과 같은 형식의 선언을 볼 수 있다.

사용에는 큰 문제가 없으나, 이를 printf 와 같은 함수로 표현할 때 문제가 발생한다. 시스템(아키텍쳐)에 따라서 타입이 바뀌기 때문이다.

예를 들어 라즈베리 파이 3에서는 intmax_t 는 long long int 로 표현된다. 하지만 intel 프로세서 에서는 intmax_t 는 long int 로 표현된다.

이를 위해서 inttypes.h 헤더 에서는 특별한 핸들링 매크로를 제공한다.

Macros

intmax_t 와 같은 특별한 타입들을 위한 매크로 정의 모음

decimal notation

<source lang=c> /* Decimal notation. */

  1. define PRId8 "d"
  2. define PRId16 "d"
  3. define PRId32 "d"
  4. define PRId64 __PRI64_PREFIX "d"
  1. define PRIdLEAST8 "d"
  2. define PRIdLEAST16 "d"
  3. define PRIdLEAST32 "d"
  4. define PRIdLEAST64 __PRI64_PREFIX "d"
  1. define PRIdFAST8 "d"
  2. define PRIdFAST16 __PRIPTR_PREFIX "d"
  3. define PRIdFAST32 __PRIPTR_PREFIX "d"
  4. define PRIdFAST64 __PRI64_PREFIX "d"


  1. define PRIi8 "i"
  2. define PRIi16 "i"
  3. define PRIi32 "i"
  4. define PRIi64 __PRI64_PREFIX "i"
  1. define PRIiLEAST8 "i"
  2. define PRIiLEAST16 "i"
  3. define PRIiLEAST32 "i"
  4. define PRIiLEAST64 __PRI64_PREFIX "i"
  1. define PRIiFAST8 "i"
  2. define PRIiFAST16 __PRIPTR_PREFIX "i"
  3. define PRIiFAST32 __PRIPTR_PREFIX "i"
  4. define PRIiFAST64 __PRI64_PREFIX "i"

/* Octal notation. */

  1. define PRIo8 "o"
  2. define PRIo16 "o"
  3. define PRIo32 "o"
  4. define PRIo64 __PRI64_PREFIX "o"
  1. define PRIoLEAST8 "o"
  2. define PRIoLEAST16 "o"
  3. define PRIoLEAST32 "o"
  4. define PRIoLEAST64 __PRI64_PREFIX "o"
  1. define PRIoFAST8 "o"
  2. define PRIoFAST16 __PRIPTR_PREFIX "o"
  3. define PRIoFAST32 __PRIPTR_PREFIX "o"
  4. define PRIoFAST64 __PRI64_PREFIX "o"

</source>

unsigned integer

<source lang=c> /* Unsigned integers. */

  1. define PRIu8 "u"
  2. define PRIu16 "u"
  3. define PRIu32 "u"
  4. define PRIu64 __PRI64_PREFIX "u"
  1. define PRIuLEAST8 "u"
  2. define PRIuLEAST16 "u"
  3. define PRIuLEAST32 "u"
  4. define PRIuLEAST64 __PRI64_PREFIX "u"
  1. define PRIuFAST8 "u"
  2. define PRIuFAST16 __PRIPTR_PREFIX "u"
  3. define PRIuFAST32 __PRIPTR_PREFIX "u"
  4. define PRIuFAST64 __PRI64_PREFIX "u"

</source>

intmax_t/uintmax_t

<source lang=c> /* Macros for printing `intmax_t' and `uintmax_t'. */

  1. define PRIdMAX __PRI64_PREFIX "d"
  2. define PRIiMAX __PRI64_PREFIX "i"
  3. define PRIoMAX __PRI64_PREFIX "o"
  4. define PRIuMAX __PRI64_PREFIX "u"
  5. define PRIxMAX __PRI64_PREFIX "x"
  6. define PRIXMAX __PRI64_PREFIX "X"

</source>