도와주세요!!
글 수 15,339
안녕하세요.
임베디드쪽 개발 초보자 입니다.
임베디드 개발시 데이터 타입 관련해서 궁금한게 있어서 글 올립니다.
일반적으로 32bit OS에서 int 형의 사이즈는 32bit(4Byte) 길이를 갖고, short-2Byte, char-1Byte, double-8byte....형태로 정의됩니다.
그런데 8bit, 16bit, 64bit 시스템에서는 int형 사이즈가 각각 8,16,64로 정의 되는게 맞는지요?
그렇다면 예를들어 16bit 시스템의 경우 int형 사이즈가 16bit이면.... short, char, double, long int 등의 데이터 크기는 어떻게 결정이
되는지요?
원칙적으로는 int 형은 해당 CPU의 처리 기본 데이터 형에 영향을 받는 것이 맞습니다.
그렇지만 컴파일러 마다 다르게 정의 될 수 있습니다.
즉 컴파일러 맘이죠 ^^
그래서 임베디드 시스템의 소프트웨어를 작성할 경우에는
타입 정의를 다시해서 쓰는 것이 안전 합니다.
다음과 같이 정의해 쓰면 큰 문제가 없는 것으로 알고 있습니다.
리눅스 코드에서 베껴서 살짝 수정한 겁니다.
typedef signed char s8;
typedef unsigned char u8;
typedef signed short s16;
typedef unsigned short u16;
typedef signed long s32;
typedef unsigned long u32;
typedef signed long long s64;
typedef unsigned long long u64;