본문 바로가기

app/C

uint8_t, uint32_t , uint16_t

_t는 구조체에 붙이는 거라기 보다는 user-defined type에 붙이는거죠.

uint8_t, uint32_t등은 stdint.h를 보면 알 수 있습니다.

platform마다 datatype의 크기가 다르기 때문에 portability를 지원하기 위해서

 uint8_t,uint32_t등이 있습니다.

_t 같은 data type을 전문 용어로 Primitive System Data Type 라고 불러요...

정수 비트 길이와 바이트가 문제가 될 때 char 또는 short, int, long, long long 같은 데이터 형식을 사용하지 않고 고정 길이 데이터 형식을 이용한다. 

C 언어의 표준으로 규정되어 있는 부호 및 부호 없는 고정 길이 정수는 위와 같다. 

이유는 다음과 같다. ISO가 개발한 C 언어 표준 "ISO / IEC 9899"에서는 char 또는 short, int, long, long long 같은 데이터 형식의 길이(비트 길이)에 대한 처리 계에 마다 정의하는 것이 허용되며 이식성 문제를 일으킨다. 


1999년에 개정된 "ISO / IEC 9899:1999"에서도 이 문제의 잠재적인 원인은 해결되지 않았지만 표 1에 표시한 비트 길이를 고유하게 정의한 데이터 형식이 추가되었다. 이 새로운 형식은 "stdint.h"라는 헤더 파일에 정의되어있다.



한마디로 32비트와 64비트의 데이터 길이의 변화에 따른 버그,에러를 막기 위해서 define해서 사용하는거~ 리눅스, 임베디드 계열에서는 많이 사용한단다. 




출처:http://kldp.org/node/3270