▶ 이전글/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_;

 

예제에서는 두 개의 구조체가 서로의 포인터를 가지고 있습니다. 즉 돌고 도는 구조체입니다. 이와 같이 구현하고 싶으면 맨 위에 두줄의 불완전 선언으로 먼저하고 참조하게 하면 됩니다.