불완전 선언(구조체전방선언)

돌고 도는 구조체를 어떻게 선언해야 할까요? 자기 자신을 포인터하는 구조체를 선언하는 방식이 바로 구조체전방선언이라고 불리우는 불완전 선언입니다.

 

아래 예제를 보도록 하겠습니다.

 

먼저 다음과 같이 불완전 선언부터 해야 합니다.

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_;

 

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

'▶ 이전글 > C Coding' 카테고리의 다른 글

typedef enum을 써야하는 강력한 이유  (0) 2018.02.02
2차원배열, 함수 매개변수로 넘기는 방법과 파일명 정렬 소스  (0) 2015.09.15
static  (0) 2014.10.02
typedef, define  (0) 2014.10.02
enum  (0) 2014.10.02