Страница 1 из 1
Почему не работает switch
Добавлено: Пт окт 31, 2014 23:01:48
igor48
Уважаемые форумчане!
Подскажите, в чем может быть дело.
В keil uVision4 компилятор СИ не хочет принимать switch:
switch (x)
{
case 1:
y=2;
break;
default:
y=3;
}
Пишет: expected identifier or '('
Re: Почему не работает switch
Добавлено: Пт окт 31, 2014 23:07:09
dosikus
Keil 5.12 все работает .
Что есть x и y ?
Re: Почему не работает switch
Добавлено: Пт окт 31, 2014 23:24:13
igor48
Да любые переменные, например:
volatile uint8_t x;
uint8_t y;
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 14:12:10
uk8amk
Ну мало ли вариантов, от забыл поставить запятую/скобку до действительного косяка компилера.
А проект где?
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 14:56:08
ЛеонидК
А может нужно так:
switch (x)
{
case 1: {
y=2;
break;}
default: {
y=3;}
}
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 16:04:53
mail_robot
а может перед свичом чтото пропущено
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 17:07:32
dosikus
ЛеонидК писал(а):А может нужно так:
В теле свитча нет ошибок , ошибка где то рядом.
Но это мы похоже не узнаем , ТС код зажал...

Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 18:15:04
igor48
Изначально код был другой, но в поисках ошибки я его упростил до максимума.
Это целиком содержимое отдельного СИ файла:
int x, y;
switch (x)
{
case 1:
y=2;
break;
default:
y=3;
}
Компилятор ставит крест и ругается имеено на switch
В других компиляторах такие конструкции проблем не вызывают. А тут уже попробовал все варианты, какие мог придумать.
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 18:26:04
pcb
Не инициализирован Х, компилятор упростил

Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 18:34:32
igor48
Похоже допер!!! В отдельном СИ файле switch должен стоять только внутри какой либо функции. Иначе компилятор ругается вроде как на синтаксис и сбивает с толку.
Всем спасибо за поддержку. Прошу сильно не ругать - маловато опыта программирования.
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 18:54:19
ARV
вообще говоря, любой ОПЕРАТОР должен быть внутри какой-либо функции...
Re: Почему не работает switch
Добавлено: Сб ноя 01, 2014 19:21:06
menzoda
Мда, как всегда дело в интерфейсе между стулом и клавиатурой.
Re: Почему не работает switch
Добавлено: Вс ноя 02, 2014 09:05:53
mail_robot
ничего, научится
Re: Почему не работает switch
Добавлено: Вс ноя 02, 2014 11:32:34
menzoda
Да просто прочтение любой, даже самой простой книжки по языку си, избавило бы от таких вопросов раз и навсегда.
Re: Почему не работает switch
Добавлено: Вс ноя 02, 2014 14:33:00
igor48
Не! Ну уж совсем злорадствовать не надо. И книжки я читаю. Такое получается обычно по невнимательности. Просто вначале наспех шлепнул оператор вне тела функции, а потом мозг заклинило - компилятор вроде ругается на синтаксис и подсвечивает виновника. А он же, зараза, ругался и думал совершенно о другом. Думаю, что каждый может наступить на подобные грабли.
Re: Почему не работает switch
Добавлено: Вс ноя 02, 2014 15:05:28
menzoda
Может быть. Просто, по моему написать оператор вне тела функции - это как залить бензин в салон, а не в бак. Я конечно тоже по всякому ошибался, но так - ни разу.

Ничего личного, просто очень много на форуме подобных вопросов. Обычно это происходит из-за того, что человек не подготовившись сразу бросается на амбразуру.