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;
다이어그램으로 표현하면 다음과 같다. 이처럼 기존에 정의된 자료형을 이용해 계속 응용해 나가는 것이 특징이다.
반응형
'프로그래밍 언어 > C, C++' 카테고리의 다른 글
Trouble Shooting (0) | 2021.01.28 |
---|---|
sprintf, vprintf, svprintf 사용법 (0) | 2021.01.25 |
[c] 공용체(Union) 사용법(feat. Embedded) (0) | 2020.12.31 |
[c] return과 exit 함수의 차이 (0) | 2020.08.20 |
cstring vs string (0) | 2020.08.04 |