먼저 Typedef란 무엇이냐
Type Definition으로, 타입정의
자료형 자체를 인스턴스로 생성할 수 있습니다.
typedef unsigned int UINT;
UINT라는 이름으로 unsigned int형을 사용하겠다. 요런 뜻입니다.
//(1)
struct _tagPoint{
int x;
int y;
}POINT;
//(1-1)
struct _tagPoint{
int x;
int y;
};
//(2)
typedef struct _tagPoint{
int x;
int y;
}POINT;
//(2-1)
typedef struct{
int x;
int y;
}POINT;
하나씩 설명하겠습니다.
(1)에서는 POINT라는 인스턴스를 생성한것입니다.
POINT.x 로 사용할 수 있다는 말입니다.
(1-1)에서는 선언된 인스턴스가 없습니다.
struct _tagPoint POINTS;
POINTS s;
s.x 로 사용할 수 있습니다.
(2)에서는 구조체 자체를 POINT라는 자료형으로 정의한 것입니다.
POINT s;
s.x 로 사용할 수 있습니다.
(2-1)도 마찬가지지만
tag명을 생략하고 사용가능합니다.
(2)와의 차이점은 struct POINT s; s.x;로 사용할 수 없습니다.
오로지 POINT s; s.x;로만 사용할 수 있습니다.
정리하면 typedef 문을 사용하게 되면 인스턴스가 생성되는게 아니라, 자료형이 하나 정의되게 되는 것입니다.
'Programming Language > C, C++' 카테고리의 다른 글
Cast - reinterpret_cast, static_cast, const_cast, dynamic_cast (0) | 2014.05.13 |
---|---|
LPCTSTR, TCHAR, char (0) | 2014.05.13 |
C++ TR1 설치 (0) | 2014.05.13 |
inline 함수 (0) | 2014.05.11 |
릴리즈모드 링크에러 (0) | 2014.05.11 |