프로그래밍/C

size_t, pid_t,ssize_t...

msh1307 2022. 5. 3. 21:27

size_t, pid_t같은 자료형들은 primitive 자료형이라고 한다. primitive 자료형들은 sys/types.h 헤더파일에 정의되어있다. 

int나 long long int 같은 자료형을 사용한다면, 나중에 크기나 데이터 표현 방식이 달라지면서 코드를 사용할 수 없게 될 수 있다.

int형은 16bit 운영체제 시절에는 2byte의 크기를 가졌었고 32bit 운영체제에선 4byte의 크기를 가진다.

이렇게 자료형의 크기가 바뀌게 되면 전체 코드 수정이 불가피 했었다. 

그래서 헤더파일에 typedef를 사용해서 미리 unsigned int는 size_t처럼 미리 정의해두고, 만약 수정이 필요하면 헤더파일만 수정해서 자료형을 재정의해주면 된다. 결과적으로 소스 전체를 수정할 필요가 없게 된다. 

 

ssize_t는 int, size_t는 unsigned int로 정의되어있다. pid_t도 찾아보면 int로 정의되어있다.