반응형

ssize_t, size_t 그리고 pid_t


ssize_t : signed int

size_t : unsigned int


다소 생소해 보이는 자료형이 몇몇 등장했다.

이러한 것을 두고 고전적인(primitive) 자료형이라 한다. 일반적으로 <sys/types.h> 헤더에 선언되어 있는데, 사실 C의 typedef 선언을 통해서 정의되어 있따. 즉 새롭게 등장한 것이 아니라, 잘 알고 있는 int, float, long과 같은 기본 자료형을 가지고, 이름만 바꾸어 정의해 놓은 것이다. 이러한 자료형들은 꾀 오래 전부터 존재하고 있엇다. 그렇다면 도대체 왜 이러한 것을 정의해 놓고 사용하는걸까?? int, short, float이 촐라 좋은데 ㅠㅠ;;;ㅋ


지금은 int가 32비트라고 한다. 보편적으로 사용되는 운영체제와 컴퓨터가 32비트 이기 때문이다. 과거 16비트 시설에는 int가 16비트였고 곧 64비트 시대가 도래 할것이다. 즉, 시스템에 따라서 자료형의 표현 방식이 틀려지므로 내가 구현한 프로그램을 다른 시스템에서 실행 시키기 위해서는 코드의 수정 자체가 불가피하다.


그러나 4바이트의 자료형이 필요한 곳에, 지금 처럼 헤더파일에 unsigned int를 size_t로 정의해 놓고 쓰게 되면, 나중에 시스템이 변경되어서 unsigned int가 더이상 4바이트를 나타내지 않게 되었을 때, 4바이트를 나타내는 다른 적절한 자료형을 가지고 헤더파일에 선언되어 있는 size_t를 재정의해 주기만 하면 된다.

즉 소스 코드는 바꾸지 않고 컴파일만 다시 한번 하면 새로운 시스템에서 잘 돌아가게 된다는 것이다.

이것이 int, double, short, float과 같은 특정 자료형에 종속되지 않도록, 새로운 이름의 자료형을 정의해 주는 이유가 된다.

반응형
Posted by Real_G