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

switch (Button_event) //Главный Свич по событию кнопки энкодера и самого энкодера
{

case 1:                                                                              //Короткое нажатие
      switch (MenuEdit) {                              
            case 0:                                                                  //Короткое нажатие кнопки Режим навигации
                    switch (MenuTypeCode[MenuNowPos]) { 
                         case 0:                                                      //Короткое нажатие Если строка меню
                          MenuDrawPos = 0;                          
                          MenuNowPos = MenuChildFirst[MenuNowPos];  
                          break;
                        case 1:                                                   //Короткое нажатие , если интовая переменная    
                              MenuEdit = 1; 
                                      switch (Еще какой-нить параметр) {
                                         case 0:
                                         break;
                                         case 1:
                                        break;
                        }
            break;
                 }

break;
}

Суть вопроса прозвучала в теме. От чего зависит количество вложенных друг в друга switch ?
Можно ли это как-то увеличить?

чота не так с архитектурой приложения.

Это кусочек функции. В ней до трех вложенных switch ей доходит. Функция емкая, содержит порядка 800 строк. Пока было кое что на if() все работало. Решил причесать, чтоб было красиво- перестало работать.

Приложение обновил недавно. Все проекты предыдущие работают.

так я и говорю, INVALID ARCHITECTURE. Текст функции должен влазить в 1 экран.

Наверное дело не в этом. Есть функции , которые состоят из 1000 строк, но имеют меньшее количество вложений svitch ей, при этом все работает. Может есть какие-то настройки в
arduino ide ? Файл конфигурации какой-то, где можно размер стека подправить?

Какие настройки? Вы где-то лоханулись с логикой, вот и не работает.

2 лайка

Склонен думать то же. На всякий случай хотел проконсультироваться у специалистов:)
Спасибо. Ищу косяк.

У меня - нет.

1 лайк

switch - это модифицированное goto.
Так что там стек вообще не участвует.

Какие Ваши годы:)

Исключительно от того, сколько Вы их друг в друга всунете. У нормальных людей - крайне редко больше одного. У альтернативно одарённых могут и десятки быть, пока в память лезет.

Меню ?- меню любого уровня вложенности пишутся чере один уровень свитча

А если в меню есть переменные 6и типов, само меню может и обошлось бы 1им свичем, это если по нему просто ходить. У моего меню есть режим навигации, редактирования пиеременных, режим модального меню, в котором есть 6 страничек, на которые можно зайти и посмотреть отражение работы устройства… Управляется все энкодером. Можно короткое нажатие сделать, можно длинное, можно ручку крутить вверх и вниз. Одним свичем пожалуй не отделаешься.

v258 был прав. Все работает!!!

Это все к вложенности отношения не имеет.
Но вы можете хоть сотню свичей вкладывать - разбираться то потом вам

Любую программу можно сократить хотя бы на 1 шаг. А вот стоит ли?

Удачи

Аналогично!:slight_smile:

Все как-то “отделываются”. И меню не только “отражает работу устройства”, а ещё и корованы грабит и всё равно одним обходятся.

Вам дали дельный совет - пересмотрите архитектуру программы.

Вам так же сказали, что никаких ограничений на вложенность нет, кроме мозгов автора.

Я правильно понимаю, что Вы получили ответ на вопрос и хороший совет, и тема исчерпана?

Или Вы пришли не за ответом и советом, а просто поспорить и доказать свою правоту? Тогда лучше было это в пятницу делать :slight_smile:

4 лайка