안녕하세요 수업을 듣다가 의문점이 생겨 글을 올립니다. 제가 이해한 바로는 고정너비 정수를 이용하는 이유가 C언어 표준에서는 자료형마다 최소 기준만을 설정해놓았기 때문에, 만약 시스템(컴파일러 등등)이 달라진다면 int 나 char와 같은 자료형이 차지하는 메모리도 달라질 수 있기 때문에, 이식성을 높이기 위해서int32_t와 같은 자료형을 사용한다는 것입니다. 하지만 stdint.h를 보면 typedef int int32_t; 처럼 int의 별칭을 int32_t로 정하고 있습니다. 이러한 상황에서는 int를 32bit로 사용하는 시스템에서는 int32_t가 32bit를 사용하겠지만, 만약에 int를 64bit로 사용하는 시스템이 있다고 가정을 한다면(C 표준은 bit의 최소기준만 설정해놓았기 때문), int32_t는 int의 별칭(alias)이기 때문에 결국은 int32_t도 64bit를 사용하는 것 아닌가요? 이렇게 된다면 int32_t는 더 이상 고정되어있지 않고 시스템이 바뀔 때마다 달라지는 것 아닌가요? 궁금합니다..
int 타입은 하드웨어 의존 가능성이 있으므로 플랫폼에 따라 4바이트 또는 2바이트로 실행이 될 수 있으므로 이식성에 문제가 있을 수 있음을 설명하셨습니다. 그래서 플랫폼 independent하게 4바이트로 고정 될 수 있는 int32_t라는 타입이 있는 것으로 이해가 됩니다. 그러나 stdint.h에 정의되고 있는 아래 typedef에 의하면 그냥 원래 int 를 int32_t라는 이름으로 재정의하고 있을 뿐입니다. 그런데 왜 이것이 32비트로 고정이 되는지 궁급합니다. 즉, int32_t i 로 i 변수를 define 한다는 것은 int i 와 다를 바가 없는 것으로 이해가 됩니다. 아시겠지만 tydef는 구글링 한 바로는 아래와 같습니다. typedef int int32_t; The typedef is a keyword used in C programming to provide some meaningful names to the already existing variable in the C program. It behaves similarly as we define the alias for the commands. In short, we can say that this keyword is used to redefine the name of an already existing variable.