Я написал эту часть кода, и показывается серия ошибок. Вышеупомянутая ошибка является первой. Что не так в коде?
void direction(char ch)
{
switch(ch)
case 'w': if(dirn!=3){dirn=1;}
break;
case 'a': if(dirn!=2){dirn=4;}
break;
case 's': if(dirn!=1){dirn=3;}
break;
case 'd': if(dirn!=4){dirn=2;}
break;
Вы можете опустить открывающие и закрывающие фигурные скобки для оператора switch только в том случае, если в вашем блоке switch есть только один случай, как показано ниже:
void direction(char ch)
{
switch(ch)
case 'w': if(dirn!=3){dirn=1;}
}
Но, если у вас есть несколько случаев, с которыми нужно иметь дело, как в вашем случае, вы должны заключить их в пару открывающих и закрывающих фигурных скобок, чтобы создать блок кода для оператора switch, как показано ниже:
void direction(char ch)
{
switch(ch)
{//opening brace for starting of statement block
case 'w': if(dirn!=3){dirn=1;}
break;
case 'a': if(dirn!=2){dirn=4;}
break;
case 's': if(dirn!=1){dirn=3;}
break;
case 'd': if(dirn!=4){dirn=2;}
break;
}//closing brace for closing of statement block
Таким образом, вам придется либо удалить все случаи, но одним ИЛИ добавить пару фигурных скобок для создания блока операторов. Во всех остальных случаях ваш код не будет успешно скомпилирован.
Вы забыли о скобках переключателей:
void direction(char ch)
{
switch(ch)
{
case 'w': if(dirn!=3){dirn=1;}
break;
case 'a': if(dirn!=2){dirn=4;}
break;
case 's': if(dirn!=1){dirn=3;}
break;
case 'd': if(dirn!=4){dirn=2;}
break;
}
}
Для оператора switch требуется блок скобок, где все метки, включая метку по умолчанию, должны быть:
switch(ch)
{
case 'w': if(dirn!=3) dirn=1;
break;
case 'a': if(dirn!=2) dirn=4;
break;
case 's': if(dirn!=1) dirn=3;
break;
case 'd': if(dirn!=4) dirn=2;
break;
default:
break;
}
Заявление после переключения должно быть составное заявление содержать case, default и break. Разрыв здесь имеет особое значение, отличное от циклов. Если фигурная скобка была опущена, только следующая строка после switch является частью ее оператора.