프로그래밍 언어/C, C++
수준 높은 회사가 C언어 자료형을 사용하는 방법
EastHoon
2020. 10. 10. 19:40
Win32, MFC 등과 같은 큰 규모의 시스템 프로그래밍 API 혹은 칩 벤더사의 SDK를 보면 자료형을 예술적(?)으로 사용한다.
본인이 느낀 공통점은 다음과 같다.
- Base 자료형을 먼저 정의
- Base 자료형을 상속받은(혹은 원소로 하는) 새로운 자료형 정의
- 상황에 맞는 혹은 라이브러리 별 자료형을 새로 정의
이런 식으로 자료형을 만들면, 구조체 형변환을 통해 필요한 부분만을 읽어와서 수정하는 등 자유 자재로 활용이 가능하다.
말로 표현하긴 쉽게 와닿지 않을 것 같아서 예시를 들어 설명을 해본다.
먼저, BaseType
typedef struct _BASE {
uint16_t ByteAllocated; # 데이터를 표현하는 정보 1
uint8_t Bitlength; # 데이터를 표현하는 정보 2
uint8_t *Data; # 데이터는 할당하여 사용
} BASE;
typedef BASE* pBASE;
그다음은 BaseType을 상속(?) 받은 추가적인 특징을 정의하기 위한 자료형
typedef struct _TBASE {
BASE super_
uint16_t cookie;
uint16_t SetID;
} TBASE;
typedef TBASE* pTBASE;
여기까지가 기본이며 이제 이 자료형을 가지고 다양한 축 상에서 정의된 자료형을 만들 수 있다.
e.g. AFFINE 축 상의 점은 (x, y) 점으로 정의 된다
typedef struct _AFFINEPOINT {
TBASE X;
TBASE Y;
}AFFINEPOINT;
typedef AFFINEPOINT* pAFFINEPOINT;
다이어그램으로 표현하면 다음과 같다. 이처럼 기존에 정의된 자료형을 이용해 계속 응용해 나가는 것이 특징이다.
반응형