C언어에서는 typedef라는 키워드를 사용하여 기존 데이터형의 이름을 새롭게 부여하는 방법을 제공하고 있습니다. 이번 포스트에서는 typedef을 사용하는 방법을 설명합니다.
이번 포스트의 주요 내용
1. typedef로 새로운 데이터형 이름 정의하기
2. typedef의 장점
typedef로 새로운 데이터형 이름 정의하기
다음과 같은 형식으로 기존 데이터형의 새로운 이름을 정의할 수 있습니다.
typedef (기존 데이터형의 이름) (새로운 데이터형의 이름); |
예를 들어 int형의 새로운 이름으로 number를 부여하고, 이에 대한 변수를 정의할 수 있습니다.
typedef int number;
number num; |
참고로 기존 이름과 새 이름의 데이터형으로 정의되는 변수들은 100% 호환됩니다. 단지, 데이터형의 이름만 다를 뿐입니다. 위 예에서 int형 변수와 number형 변수는 호환됩니다.
typedef의 장점
typedef를 사용하면 좋은 점은 크게 두 가지가 있습니다.
1. 정수형 데이터를 특수한 용도로 사용함을 명확하게 나타낼 수 있다.
사실 정수 데이터형의 용도는 넓습니다. 어떤 수치를 계산하는데 사용되기도 하고, 어떤 명제가 사실인지 거짓인지를 나타내기 위해 사용되기도 하며, 특정 값에 특정한 의미를 부여하여 특수한 용도로 사용될 수도 있습니다. 단순히 int, long이라는 이름으로 변수를 정의하는 것이 나쁜 것은 아닙니다. 그렇지만 변수가 한정된 용도로 사용되는 것을 명시한다면, 코드를 읽기가 쉬워집니다. 예를 들어 정수형 변수를 플래그(flag)로 사용하고 싶다면, 다음과 같이 typedef로 데이터형의 새 이름을 부여하는 것이 더 좋은 코딩 방법이 될 수 있습니다.
typedef int flag;
flag settingFlag; |
2. 길다란 사용자 정의 데이터형을 짧게 줄인다.
사용자 정의 데이터형이란 C언어가 제공하는 것이 아닌, C가 제공하는 문법적 요소를 이용하여 사용자가 새롭게 정의한 데이터형을 의미합니다. 이를 정의하는데 사용되는 키워드는 enum, struct, union 등이 있습니다. 이 키워드 뒤에 이름을 부여하면, 사용자 정의 데이터형이 만들어집니다. 예를 들면, 다음과 같이 새로운 데이터형들을 만들 수 있습니다. (이들을 구현하는 방법은 별도 포스트에 설명드립니다.)
enum Day { /* 생략 */ } struct StudentRecord { /* 생략 */ } union GeneralData { /* 생략 */ }
enum Day day; struct StudentRecord sRecord; union GeneralData genData; |
그런데 위 데이터형들에 대한 변수를 정의할 때마다 enum, struct, union이라는 키워드를 붙이는 것은 번거롭습니다. typedef를 이용하면 이와 같은 귀찮은 작업으로부터 해방됩니다.
enum Day { /* 생략 */ } struct StudentRecord { /* 생략 */ } union GeneralData { /* 생략 */ }
typedef enum Day Day; typedef struct StudentRecord StudentRecord; union GeneralData GeneralData;
Day day; StudentRecord sRecord; GeneralData genData; |
<출처 : http://netrance.blog.me/110050495801>