돌고 도는 구조체를 어떻게 선언해야 할까요? 자기 자신을 포인터하는 구조체를 선언하는 방식이 바로 구조체전방선언이라고 불리우는 불완전 선언입니다.
아래 예제를 보도록 하겠습니다.
먼저 다음과 같이 불완전 선언부터 해야 합니다.
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 |