Страницы

четверг, 12 декабря 2013 г.

Arduino problem: Jump to case label [-fpermissive]


При объявлении новых переменных в каждом блоке case, может возникнуть ошибка, из-за того что переменная будет выходить за пределы своего case. Поэтому данный блок case следует оградить {}.

Текст ошибки: Read_line_form_serial.cpp: In function ‘void loop()’:
Read_line_form_serial.cpp:37:16: error: jump to case label [-fpermissive]
Read_line_form_serial.cpp:33:18: error:   crosses initialization of ‘byte dalnomer_namber’


Данный код, при компиляции выдаст ошибку:

//line - массив
switch(line[0]){
    case 'P': //Raspberry Pi
        switch(line[1]){
          case 'D':
            byte dalnomer_namber = line[3]-'0'; //Новая переменная 
            RaspberryPi.println(sonar(dalnomer_namber));
            break;
          case 'S':
            byte servo_namber = line[3]-'0'; //Еще одна новая переменная
            break;
        }
       break;
    case 'R': //Radio
      //Какой-то код...
      break;
    case 'T':  //Tablet
      //Какой-то код...
      break; 
  }
}
А это рабочая версия того же кода:

//line - массив
switch(line[0]){
    case 'P': //Raspberry Pi
        switch(line[1]){
          case 'D':
          {
            byte dalnomer_namber = line[3]-'0'; //Новая переменная 
            RaspberryPi.println(sonar(dalnomer_namber));
            break;
          }
          case 'S':
          {
            byte servo_namber = line[3]-'0'; //Еще одна новая переменная
            break;
          }
        }
       break;
    case 'R': //Radio
      //Какой-то код...
      break;
    case 'T':  //Tablet
      //Какой-то код...
      break; 
  }
}

Комментариев нет:

Отправить комментарий

SQRT(-1) love you!