Arduino IDE. switch . Есть ли ограничение на количество вложенных друг в друга switch?

Толково, конструктивно, делово!!! Спорить даже больше не хочется. Я все получил, что хотел. Тему можно было бы закрыть еще на 7й строке. После Вас, ЕвгенийП, сюда за советом больше не хочется приходить. Удачи в грабеже кОрОванов!

1 лайк

Спасибо, она мне не помешает!

А зачем Вы выделили буквы “О” прописными? С ними что-то не так?

ТС! Я где-то читал, что отсутствие ЧЮ - легкая форма психопатии. Проработка с психологом и прокачка эрудиции должны помочь. Я в тебя верю!

А зачем даже 1 свич в меню? А если меню динамическое потребуется? Для навигации тем более свичи не нужны. Только еще один “интерфейсный” экземпляр класса
Как то так себе делал:

Спойлер
#include "QList.h"

class Item {
  public:
    Item(Item* parent= nullptr) {_parent = parent;}
    const char* _name {"Main"};                     // name of current menu item
    Item* _parent = nullptr;                        // parents pointer. Nullptr for root
    uint8_t _retFrom {0};                           // number of child-item, from witch was "go to parent" executed. first (0) by default
    QList <Item*> child;                            // children refs list 
    size_t childCount {0};                          // children qty
    uint8_t _nrAtParentsList {0};                   // items number at parent's child-list
    Item* newChild(const char* nme, void (*ptr)()); // create a new child end-point with action
    void (*actionF)() {nullptr};                    // pointer to executable routine   
  private:
};


Item* Item::newChild(const char* nme, void (*ptrA)() = nullptr) {
  Item* p = new(Item);
  p->_name = nme;
  p->_parent = this;
  p->_nrAtParentsList = childCount++;
  p->actionF = ptrA;
  child.push_back(p);
  return p;
}
1 лайк

Религии разные. ООП против функционального.

Ds. В Майкрософт нормальных людей нет:

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    switch (message)
    {
    case WM_COMMAND:
        {
            int wmId = LOWORD(wParam);
            // Разобрать выбор в меню:
            switch (wmId)
            {
            case IDM_ABOUT:
                DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
                break;
            case IDM_EXIT:
                DestroyWindow(hWnd);
                break;
            default:
                return DefWindowProc(hWnd, message, wParam, lParam);
            }
        }
        break;
    case WM_PAINT:
...

Или без оного.
Пример: Меню для двухстрочного дисплея | Аппаратная платформа Arduino
Собственно, в проекте нет вообще ни одного свитча. Т.к. не нужно - все дерево меню набирается динамически и может быть в любой момент изменено.
Как заранее неизвестное количество пунктов прописать в свитче?

а то ты не знал…

Меню без свичей - что blink без delay(). Старинная народная поговорка