답변:
C99 stdint.h
는 다음을 정의합니다.
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
그리고 아키텍처가 지원하는 경우 :
int64_t
uint64_t
다른 다양한 정수 typedef stdint.h
도 있습니다.
C99 환경없이 멈춘다면 아마도 고유 한 typedef를 제공하고 어쨌든 C99를 사용해야합니다.
uint32
하고 uint64
(즉,없는 _t
접미사) 아마 응용 프로그램에만 적용됩니다.
stdint.h
에는 모두 필요합니다.
typedef uint32_t Uint32;
(당신이 SDL 사용자 인 경우) / SDL_stdinc.h을 포함에
이러한 정수 유형은 모두 stdint.h
stdint.h
당신이 C99 표준을 존중한다면 얻을 것이라고 생각합니다 .
stdint.h
. 이것은 0 개의 적중을 반환합니다 : grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.
#include "stdint-gcc.h"
있으며 해당 파일을 grepping 하면 정의가 생성됩니다.
_t
위의 답변에 나열된 접미사 가있는 것입니다 .
C99를 사용하는 경우 stdint.h
. BTW, 프로세서가 지원하는 경우 64 비트 유형이 있습니다.
uint128_t
if 도 있습니다 __SIZEOF_INT128__
(GCC 및 호환 가능). x86_64 / amd64 시스템에서 사용할 수 있지만 프로세서는 기본적으로 지원하지 않습니다. Cray만이 레지스터 크기 인 IIRC를 가지고 있습니다.
int_leastNN_t
및uint_leastNN_t
위해NN
8, 16, 32, 64는 항상 존재해야합니다 . C99는 64 비트 이상의 정수 유형이없는 구현을 허용하지 않습니다long long
.는 그 크기 이상이어야하기 때문입니다.