Цитата
Рекурсивные функции? Этоплохой тиль и не пример для подражания.
Учитывая, что меню живет в человеческом реальном времени и между обновлениями экрана будут проходить сотни мс, то наиболее оптимально строить поддержку меню, точнее пользовательского интерфейса, включая кнопки, индикацию, попискивание и т.п., на основе конечных автоматов.
Не разу еще не использовал рекурсии, не на PC не в embedded. Но чутье подсказывает, что рекурсия будет жрать стек, как уже выше сказал _artem_. Я создал свое меню, на основе переключателя switch, примерно так
while(menu_rk!=CANCEL_KEY) //пока не нажали "Отмена"
{
switch(menu_root_ptr) //в зависимости от указателя меню
{
case 0: //показываем соответствующий пункт, тут же, если была нажат клавиша "Вход" вызываем функцию подменю, для настройки некого параметра (например времени)
case 1:
case 2:
.....................
}
menu_rk=read_key(); //читаем код нажатой клавиши
switch(menu_rk)
{
//здесь тоже в зависимости от нажатой клавиши выполняем некие действия (изменяем указатель menu_root_ptr и др)
}
}