Почему не работает switch

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Сообщение igor48 »

Уважаемые форумчане!
Подскажите, в чем может быть дело.
В keil uVision4 компилятор СИ не хочет принимать switch:

switch (x)
{
case 1:
y=2;
break;

default:
y=3;
}

Пишет: expected identifier or '('
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Keil 5.12 все работает .
Что есть x и y ?
Реклама
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Сообщение igor48 »

Да любые переменные, например:
volatile uint8_t x;
uint8_t y;
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Ну мало ли вариантов, от забыл поставить запятую/скобку до действительного косяка компилера.
А проект где?
Реклама
Эиком - электронные компоненты и радиодетали
Встал на лапы
Сообщения: 85
Зарегистрирован: Чт янв 08, 2009 22:06:13
Откуда: Киев

Сообщение ЛеонидК »

А может нужно так:

switch (x)
{
case 1: {
y=2;
break;}

default: {
y=3;}

}
Реклама
Встал на лапы
Аватара пользователя
Сообщения: 112
Зарегистрирован: Сб янв 05, 2013 07:03:09
Откуда: в #опе изумруды?

Сообщение mail_robot »

а может перед свичом чтото пропущено
Нужно делать то, что нужно. А то что не нужно, делать не нужно (с) Винни Пух
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ЛеонидК писал(а):А может нужно так:
В теле свитча нет ошибок , ошибка где то рядом.
Но это мы похоже не узнаем , ТС код зажал... :)))
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Сообщение igor48 »

Изначально код был другой, но в поисках ошибки я его упростил до максимума.
Это целиком содержимое отдельного СИ файла:

int x, y;
switch (x)
{
case 1:
y=2;
break;

default:
y=3;
}

Компилятор ставит крест и ругается имеено на switch

В других компиляторах такие конструкции проблем не вызывают. А тут уже попробовал все варианты, какие мог придумать.
Последний раз редактировалось igor48 Сб ноя 01, 2014 18:34:55, всего редактировалось 2 раза.
pcb
Опытный кот
Сообщения: 833
Зарегистрирован: Пт авг 12, 2011 09:14:27
Откуда: Млечный путь/Земля/РФ/Екатеринбург

Сообщение pcb »

Не инициализирован Х, компилятор упростил :)
Разработал:
-BLDC
-ФУОЗ/МПСЗ
-SMART BMS
-ECU/EDC на STM32F4(43%)+CPLD(57%)
-Моноинжектор на ATSAMD20G16
-контроллер эффектов для RGB LED ленты
-умные часы/обратный счет/секундомер
-устройство измерения емкости АКБ
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Сообщение igor48 »

Похоже допер!!! В отдельном СИ файле switch должен стоять только внутри какой либо функции. Иначе компилятор ругается вроде как на синтаксис и сбивает с толку.
Всем спасибо за поддержку. Прошу сильно не ругать - маловато опыта программирования.
ARV
Ум, честь и совесть. И скромность.
Аватара пользователя
Сообщения: 18682
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск

Сообщение ARV »

вообще говоря, любой ОПЕРАТОР должен быть внутри какой-либо функции...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Контактная информация:
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Мда, как всегда дело в интерфейсе между стулом и клавиатурой.
Встал на лапы
Аватара пользователя
Сообщения: 112
Зарегистрирован: Сб янв 05, 2013 07:03:09
Откуда: в #опе изумруды?

Сообщение mail_robot »

ничего, научится
Нужно делать то, что нужно. А то что не нужно, делать не нужно (с) Винни Пух
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

Да просто прочтение любой, даже самой простой книжки по языку си, избавило бы от таких вопросов раз и навсегда.
Прорезались зубы
Сообщения: 246
Зарегистрирован: Пт ноя 22, 2013 22:06:15
Откуда: Липецк

Сообщение igor48 »

Не! Ну уж совсем злорадствовать не надо. И книжки я читаю. Такое получается обычно по невнимательности. Просто вначале наспех шлепнул оператор вне тела функции, а потом мозг заклинило - компилятор вроде ругается на синтаксис и подсвечивает виновника. А он же, зараза, ругался и думал совершенно о другом. Думаю, что каждый может наступить на подобные грабли.
Вымогатель припоя
Аватара пользователя
Сообщения: 535
Зарегистрирован: Вт авг 28, 2012 22:21:33

Сообщение menzoda »

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

Вернуться в «ARM»