형식 정의 지정자

typedef 선언은 범위 내에서 선언의 type-declaration 부분에서 지정한 형식의 동의어가 되는 이름을 소개합니다.

typedef type-declaration synonym;

설명

Typedef 선언을 이용하여 언어에 의해 이미 정의된 형식 혹은 이미 선언한 형식에 대해 보다 짧거나 보다 의미 있는 이름을 구성할 수 있습니다. typedef 이름을 사용하면 변경될 수 있는 구현 정보를 캡슐화할 수 있습니다.

class, struct, union 및 enum 선언과 반대로, typedef 선언에서는 새 형식을 사용하지 않습니다. 기존 형식에 대해 새 이름을 사용합니다.

형식 정의 이름은 일반 식별자와 네임 스페이스를 공유합니다. 따라서 프로그램에 동일한 이름의 typedef 이름과 로컬 범위 식별자가 있을 수 있습니다.

자세한 내용은 다음을 참조하십시오.

예제

// typedef_specifier1.cpp
typedef char FlagType;

int main()
{
}

void myproc( int )
{
    int FlagType;
}

typedef와 동일한 이름의 로컬 범위 식별자를 선언하거나 같은 범위 또는 내부 범위에서 구조체 또는 공용 구조체의 멤버를 선언할 때 반드시 형식 지정자를 지정해야 합니다. 예를 들면 다음과 같습니다.

typedef char FlagType;
const FlagType x;

식별자, 구조체 멤버 또는 공용 구조체 멤버에 FlagType 이름을 다시 사용하려면 형식을 제공해야 합니다.

const int FlagType;  // Type specifier required

다음과 같이 표현하면 충분하지 않습니다.

const FlagType;      // Incomplete specification

FlagType이 다시 선언되는 식별자가 아니라 형식의 일부로 간주되기 때문입니다. 이 선언은 다음과 같이 잘못된 선언으로 간주됩니다.

int;  // Illegal declaration 

포인터, 함수 및 배열 형식을 비롯한 모든 형식을 typedef를 사용하여 선언할 수 있습니다. 정의의 표시 유형이 선언의 표시 유형과 동일한 경우 구조체 또는 공용 구조체 형식을 정의하기 전에 구조체 또는 공용 구조체 형식에 대한 포인터의 typedef 이름을 선언할 수 있습니다.

예제

typedef 선언의 한 번 사용은 선언을 보다 균일하고 압축되게 만듭니다. 예를 들면 다음과 같습니다.

typedef char CHAR;          // Character type.
typedef CHAR * PSTR;        // Pointer to a string (char *).
PSTR strchr( PSTR source, CHAR target );
typedef unsigned long ulong;
ulong ul;     // Equivalent to "unsigned long ul;"

동일 선언에서 기본 및 파생 형식을 지정하기 위해 typedef를 사용하는 경우, 쉼표로 각 선언자를 구분할 수 있습니다. 예를 들면 다음과 같습니다.

typedef char CHAR, *PSTR;

이 예제에서는 어떠한 값도 반환하지 않고 두 개의 int 인수를 갖는 함수에 대한 DRAWF 형식을 제공합니다.

typedef void DRAWF( int, int );

위의 typedef 문 뒤의 선언

DRAWF box; 

선언과 같습니다.

void box( int, int );

typedef는 struct와 자주 결합하여 사용자 정의 형식을 선언합니다.

// typedef_specifier2.cpp
#include <stdio.h>

typedef struct mystructtag
{
    int   i;
    double f;
} mystruct;

int main()
{
    mystruct ms;
    ms.i = 10;
    ms.f = 0.99;
    printf_s("%d   %f\n", ms.i, ms.f);
}
  

참고 항목

참조

C++ 키워드

기타 리소스

C++ Type Names