C에서 메뉴 시스템에 사용하는 패턴은 다음과 같습니다.
struct menuitem
{
const char *name; // name to be rendered
functionPointer handlerFunc; // handler for this leaf node (optionally NULL)
struct menu *child; // pointer to child submenu (optionally NULL)
};
struct menu
{
struct menu *parent; // pointer to parent menu
struct **menuitem; // array of menu items, NULL terminated
};
그런 다음 menu
각각 menuitem
s 및 child
하위 메뉴에 대한 포인터를 포함하는 의 배열을 선언합니다 . 위와 아래는 현재 선택된 menuitem
s 배열을 통해 이동합니다 . 뒤로는 parent
메뉴 로 이동 하고 앞으로 / 선택은 child
하위 메뉴로 이동 하거나 handlerFunc
리프 노드를 호출 합니다.
메뉴를 렌더링하려면 해당 항목을 반복해야합니다.
이 체계의 장점은 완전히 데이터 중심이며 메뉴 구조는 렌더러 및 핸들러 함수와 무관하게 ROM에서 정적으로 선언 될 수 있다는 것입니다.