Разбор принципа работы define
- Войдите на сайт для отправки комментариев
Пнд, 18/02/2019 - 02:58
Коллеги, вечер добрый!
Нужна помощь, неожидал, что я чего-то не пойму/не найду как работает следующая конструкция:
#define MAKE_MENU(Name, Next, Previous, Parent, Child, Select, Text) \ extern menuItem Next; \ extern menuItem Previous; \ extern menuItem Parent; \ extern menuItem Child; \ menuItem Name = {(void*)&Next, (void*)&Previous, (void*)&Parent, (void*)&Child, (uint8_t)Select, { Text }}
Помогите разобрать устройство такой конструкции, пожалуйста, обратные слеши меня совсем в ступор ввели
После можно использовать этот дефайн для создания нового меню
MAKE_MENU(m1name, m2, NULL, NULL, subM2, 0, "Run");
Я не понимаю куда в этом случае пишаться данные и самое главное как! Дайте разбор полетов - либо дайте эту чертову ссылку с гугла. Потому что я не понимаю как искать.
Спасибо!
у меня этот макрос в новой версии Ардуино ИДе не заработал - он с ошибкой раскрывается. Правда, уже не помню, в чем там дело.
Кроме того, мне показалось что в этой системе дико неудобно писать длинные меню - так как в каждой строчке MENU_ITEM надо заново указывать названия всех этих Next Previous Parent итд
В итоге я бросил и написал свою систему меню с нуля - не такую навороченную. зато рабочую. В общем, в гугле разных примеров меню много, этот я не рекомендую.
b707, да я бы уже сам бросил это дело! Но теперь дело принципа. Я не понимаю как это должно функционировать (если это невозможно сейчас написать на 1.8.0 или сейчас уже 1.8.2 пух с ним). Мне очень интересно что за магия) А написать другой, более простой алгоритм меню - конечно могу (это план Б)
да никакой там магии нет.
Обратные слеши - это просто переход на новую строку.
Обьявления Next Previous сделано в виде extern, чтобы иметь возможность ссылаться на строчки, которые в этот момент еще не описаны...
В принципе, там все просто и понятно, И даже где-то в гугле я встречал подробное описание именно этого макроса - что и как.
Не знаю, можно ли тут давать ссылки на другие сайты, но на изиэлектриниксе была статья с картинками как все это работает. Но всегда там можно найти по словам "Организация древовидного меню" или в оригинале "MicroMenu".
Спасибо, я поищу. Про оригинал статьи не подумал)) И за слеши спасиб!))