реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Невозожно создать переменную в case.
Jenya7
сообщение Feb 16 2015, 07:42
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Я не могу сделать так
Код
{
    case GET_DATA_LOGGER:
         uint32_t len=(uint32_t)usartRxBuf[16]+((uint32_t)usartRxBuf[15]<<8);
         uint32_t deltaOffset=(uint32_t)usartRxBuf[14]+((uint32_t)usartRxBuf[13]<<8);
         uint32_t delay=usartRxBuf[17];
         uint32_t times=usartRxBuf[18];
     break;
}

получаю
a label can only be part of a statement and a declaration is not a statement
я должен создать переменные перед case
Код
switch(mode)
{
        uint32_t len;
        uint32_t deltaOffset;
        uint32_t delay;
       uint32_t times;
    case GET_DATA_LOGGER:
        len=(uint32_t)usartRxBuf[16]+((uint32_t)usartRxBuf[15]<<8);
          deltaOffset=(uint32_t)usartRxBuf[14]+((uint32_t)usartRxBuf[13]<<8);
          delay=usartRxBuf[17];
          times=usartRxBuf[18];
     break;
}

Раньше это меня не особо беспокоило, но теперь у меня есть десятки кейсов с кучой переменных и это раздражает.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 16 2015, 07:55
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(Jenya7 @ Feb 16 2015, 09:42) *
Я не могу сделать так
Когда же вы наконец документацию прочтете?
Код
{
    case GET_DATA_LOGGER:
    {
         uint32_t len=(uint32_t)usartRxBuf[16]+((uint32_t)usartRxBuf[15]<<8);
         uint32_t deltaOffset=(uint32_t)usartRxBuf[14]+((uint32_t)usartRxBuf[13]<<8);
         uint32_t delay=usartRxBuf[17];
         uint32_t times=usartRxBuf[18];
    }
     break;
}



--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Feb 16 2015, 07:55
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(Jenya7 @ Feb 16 2015, 10:42) *
Я не могу сделать так
Код
{
     case GET_DATA_LOGGER:
          uint32_t len=(uint32_t)usartRxBuf[16]+((uint32_t)usartRxBuf[15]<<8);
          uint32_t deltaOffset=(uint32_t)usartRxBuf[14]+((uint32_t)usartRxBuf[13]<<8);
          uint32_t delay=usartRxBuf[17];
          uint32_t times=usartRxBuf[18];
      break;
}
А так:
Код
{
    case GET_DATA_LOGGER:
     {
         uint32_t len=(uint32_t)usartRxBuf[16]+((uint32_t)usartRxBuf[15]<<8);
          uint32_t deltaOffset=(uint32_t)usartRxBuf[14]+((uint32_t)usartRxBuf[13]<<8);
          uint32_t delay=usartRxBuf[17];
          uint32_t times=usartRxBuf[18];
     }
     break;
}
Go to the top of the page
 
+Quote Post
Jenya7
сообщение Feb 16 2015, 08:05
Сообщение #4


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



OMG! спасибо. в AVR я всегда ставил фигурные скобки в кейсе поэтому этой проблемы не возникало.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:23
Рейтинг@Mail.ru


Страница сгенерированна за 0.01361 секунд с 7
ELECTRONIX ©2004-2016