▶ 이전글/C Coding
불완전 선언(구조체전방선언)
좋은아침페스츄리
2014. 10. 2. 11:46
돌고 도는 구조체를 어떻게 선언해야 할까요? 자기 자신을 포인터하는 구조체를 선언하는 방식이 바로 구조체전방선언이라고 불리우는 불완전 선언입니다.
아래 예제를 보도록 하겠습니다.
먼저 다음과 같이 불완전 선언부터 해야 합니다.
typedef struct Activity_ Activity;
typedef struct Context_ Context;
typedef struct Context_
{
bool refreshRequired;
Activity *activity;
Location *location;
Menus *menus;
}Context_;
typedef void (*OnClickFunction)(Context *context);
typedef void (*OnScreenFunction)(Context *context);
typedef struct Activity_
{
unsigned char Id;
OnScreenFunction OnScreen;
OnClickFunction OnClick;
u8 timeToToast;
}Activity_;
예제에서는 두 개의 구조체가 서로의 포인터를 가지고 있습니다. 즉 돌고 도는 구조체입니다. 이와 같이 구현하고 싶으면 맨 위에 두줄의 불완전 선언으로 먼저하고 참조하게 하면 됩니다.