알고는 있지만 내가 잘 쓰지 않는 표준 타입에 size_t와 ptrdiff_t가 있다. size_t는 표준 함수(memset() 등)들의 파라미터에도 쓰이고 있지만 실제로는 unsigned long 등으로 간주해버리기 일쑤였다. VC++은 그렇지 않지만 gcc의 경우에는 원래 그것이 정의되어 있는 <sys/types.h>를 가져와야지만 컴파일 에러가 안 나기 때문에 같은 소스로도 다른 플랫폼에서 빌드가 되지 않기 때문이다.
그런데 이제 64비트 컴파일러 시대가 왔다. ‘16비트 컴파일러 -> 32비트 컴파일러’ 때만큼의 큰 장점은 없기 때문에 그다지 실감은 나지 않는다. 하지만 언젠가 올 미래에는 32비트 보다 더 큰 비트의 운영체제만 존재할 때가 올 것이고 그것 때문에 size_t와 ptrdiff_t를 다시 고려하게 되었다. 실제로 더 빨리 내가 도입해야 할 것은 ptrdiff_t 쪽이며 그 동안 32비트를 가정하고 포인터를 다루었던 많은 부분들이 다시 리뷰가 되어야 한다.
내 생각엔 이 두 개의 타입은 예전부터 언어의 예약어로서의 ‘표준’이 되어야 하지 않았나 생각된다.
Posted by 안영기