본문 바로가기

프로그래밍 언어/C, C++

수준 높은 회사가 C언어 자료형을 사용하는 방법

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