다음을 통해 공유


Typedef 선언

형식 정의 저장소 클래스로 typedef로 선언이 됩니다.새 여 자가 됩니다.형식 정의 선언을 더 짧게 또는 더 의미 있는 이름을 이미 C에 의해 정의 된 형식 또는 선언 된 형식에 대해 구성할 수 있습니다.Typedef 이름이 변경 될 수 있습니다 구현 세부 사항을 캡슐화 할 수 있습니다.

형식 정의 동일한 방법으로 변수 해석 됩니다 또는 함수 선언 되었지만 선언에 의해 지정 된 형식이 대신 식별자 형식에 대 한 동의어입니다.

구문

  • declaration:
    선언 지정자 init 선언 자 목록 선택**;**

  • 선언 지정자:
    저장소 클래스 지정자 선언 지정자 선택

    형식 지정 자가 선언 지정자 선택

    형식 한정자 선언 지정자 선택

  • 저장소 클래스 지정자:
    typedef

  • 형식 지정 자가:
    void

    char

    short

    int

    long

    float

    double

    서명

    서명 되지 않은

    구조체 또는 공용 구조체 지정자

    enum 지정자

    형식 정의 이름

  • typedef 이름은:
    identifier

참고 형식 정의 종류를 만들지 않습니다.기존 형식에 대 한 동의어 또는 다른 방법으로 지정 될 수도 있습니다 하는 형식에 대 한 이름을 만듭니다.Typedef 이름은 형식 지정자로 사용 하는 경우 특정 형식 지정자로만 결합할 수 있습니다.사용할 수 있는 한정자를 포함 const 및 volatile.

Typedef 이름은 일반 식별자와 이름 공간을 공유 (참조 하십시오 네임 스페이스 에 대 한 더 많은 정보).따라서 프로그램 typedef 이름 및 로컬 범위 식별자가 같은 이름을 가질 수 있습니다.예를 들면 다음과 같습니다.

typedef char FlagType;

int main()
{
}

int 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 이름은 코드 가독성을 높이기 위해 사용할 수 있습니다.다음 선언 중 세 signal 을 먼저 하지 않고 만드는 동일한 유형을 정확 하 게 지정 된 typedef 이름 사용 하는.

typedef void fv( int ), (*pfv)( int );  /* typedef declarations */

void ( *signal( int, void (*) (int)) ) ( int );
fv *signal( int, fv * );   /* Uses typedef type */
pfv signal( int, pfv );    /* Uses typedef type */

예제

다음 예제에서는 형식 정의 선언을 보여 줍니다.

typedef int WHOLE; /* Declares WHOLE to be a synonym for int */

참고 WHOLE 이제 변수 선언에서 사용할 수 있습니다 WHOLE i; 또는 const WHOLE i;.그러나 선언은 long WHOLE i; 사용할 수 있습니다.

typedef struct club 
{
    char name[30];
    int size, year;
} GROUP;

이 문은 선언 GROUP 세 가지 멤버를 구조체 형식으로 합니다.구조 태그, 이후 club, 또한 지정 된 typedef 이름이 (GROUP) 또는 구조 태그 선언에 사용할 수 있습니다.Struct 키워드와 태그를 사용 해야 및 struct 키워드는 형식 정의 이름으로 사용할 수 없습니다.

typedef GROUP *PG; /* Uses the previous typedef name 
                      to declare a pointer            */

형식 PG 에 대 한 포인터 선언 됩니다는 GROUP 구조 형식으로 차례로 정의 된 형식입니다.

typedef void DRAWF( int, int );

이 예제에서는 형식을 제공 DRAWF 값을 반환 하 고 두 개의 int 인수를 갖는 함수에 대 한.예를 들어, 있는 즉, 선언

DRAWF box; 

선언에 해당

void box( int, int );

참고 항목

참조

형식 지정자를 정의