더북(TheBook)

6.4 타입 이름 새로 짓기: 타입 앨리어스

앞 장에서 본 것처럼 구조체는 다양한 정보를 한 단위로 묶을 뿐만 아니라 새로운 타입을 정의하기도 한다. 구조체 이름 앞에 struct란 키워드를 항상 붙여야 해서 좀 번거로운데, 이 역시 특별한 이유가 있어서가 아니라 단순히 초창기 관례를 따르는 것뿐이다. C 언어를 처음 접하는 이들은 이 표기 방식에 적응하지 못해 struct 키워드를 종종 누락하여 컴파일 에러를 내기도 하고, 왜 그런 에러가 발생하는지도 모를 때가 많다.

이러한 번거로움을 해결해 주는 도구가 있다. 바로 기존 타입에 대한 새로운 별칭을 지정하는 typedef다. typedef를 이용하면 한 타입을 여러 이름으로 표현할 수 있다. 심지어 (다음 코드 두 번째 문장처럼) 구조체 선언에 사용한 태그 이름(tag name)C을 그대로 써도 된다.

typedef struct birdStruct birdStructure;
typedef struct birdStruct birdStruct;

이렇게 하면 struct birdStruct, birdStruct, birdStructure 중 아무거나 써도 된다. 필자는 주로 다음과 같이 작성한다.

typedef struct birdStruct birdStruct;
struct birdStruct {
  ...
};

다시 말해 struct 선언에서 사용했던 이름과 똑같은 이름으로 typedef를 정의하는 것이다. 이렇게 쓸 수 있는 이유는 struct와 그 뒤에 나오는 이름(typedef문에 나온 struct birdStruct 부분)은 뒤에서 정의할 구조체(struct birdStruct { ... };)에 대한 정식 전방 선언문(forward declaration)C이기 때문이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.