[C, C++] typedef 사용 이유

typedef 사용 이유

typedef는 자료형의 별칭을 정의할 때 사용한다. 아래 코드에서 char는 int_8의 별칭을 가지게 되고 char 혹은 int_8 중 아무거나 써도 같은 결과를 갖는다.

typedef char int_8;

가독성의 증가

가장 흔하게 볼 수 있는 예는 자료형에 비트수를 넣는 것이다. signed char 대신 int8_t, unsigned char 대신 uint8_t, short 대신 uint16_t와 같이 정의하여 만들 자료가 정확히 몇 비트 자료형인지 직관적으로 알 수 있다. 다른 분야는 잘 모르겠지만 임베디드에서는 일반적으로 이렇게 쓰기를 권장하는 것으로 알고 있다.

코드의 단축

길이가 긴 코드를 짧게 줄일 수 있다. 예로 구조체와 함수 포인터가 있다.

아래 코드에서 test_st 구조체를 선언하기 위해서 struct test_st test를 작성하였다.

struct test_st
{
    int data;
};

int main()
{
    struct test_st test;
}

반면에 typedef를 사용한 아래 코드에서는 test_st 구조체를 선언하기 위해 struct를 생략한 test_st test만을 작성하였다.

typedef struct test_st
{
    int data;
}test_st;

int main()
{
    test_st test;
}

아래 코드에서 typedef를 사용하여 함수포인터 functionPointer를 정의하였다. 따라서 선언 시 typedef void (*functionPointer) (int);를 다 작성할 필요가 없어졌다.

typedef void (*functionPointer) (int);

void print(int input)
{
    printf("%d", input);
}

int main()
{
    functionPointer fp;
    fp = print;
    fp(10);
}

Leave a Comment