Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Вопрос по Keil uVision

Непрочитано 22.11.2013, 11:34  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Вопрос по компилятору Keil:
пишу:
Цитата:
int main(void)
{
Init();
LCD_init(); // инициализация порта

LCD_wrAdr (0);
LCD_wrChar(0);
LCD_wrChar(1);

u8 cnt=0;
............
в итоге ошибка в строке "u8 cnt=0;":
error: #268: declaration may not appear after executable statement in block
убираю в конце строки u8 cnt=0; и ставлю в начало блока - все ОК!
Хочу разобраться, т.к. не в одном компиляторе не сталкивался с таким правилом. Что за стандарт описания переменных и где он задается ?
Реклама:

Последний раз редактировалось MaxiMuz79; 22.11.2013 в 12:13.
MaxiMuz79 вне форума  
Непрочитано 22.11.2013, 11:46  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Обычный стандарт - сначала объявляется/описывается, потом используется. Просто некоторые компиляторы допускают некоторые вольности и при переносе на другую платформу/МК/компилятор это всё и всплывает.
nahimovv вне форума  
Непрочитано 22.11.2013, 12:11  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Сообщение от nahimovv Посмотреть сообщение
Обычный стандарт - сначала объявляется/описывается, потом используется.
Так в первом и втором случае все так и выполняется. Но в первом случ. обьявление u8 cnt=0; после вызова функций (в которых данная переменная ни как не может быть задействована) , а во втором в самом начале блока.

Последний раз редактировалось MaxiMuz79; 22.11.2013 в 12:19.
MaxiMuz79 вне форума  
Непрочитано 22.11.2013, 13:49  
ut1wpr
Почётный гражданин KAZUS.RUN
 
Аватар для ut1wpr
 
Регистрация: 19.08.2006
Адрес: Львов
Сообщений: 1,613
Сказал спасибо: 65
Сказали Спасибо 315 раз(а) в 264 сообщении(ях)
ut1wpr на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Сообщение от MaxiMuz79 Посмотреть сообщение
Так в первом и втором случае все так и выполняется. Но в первом случ. обьявление u8 cnt=0; после вызова функций (в которых данная переменная ни как не может быть задействована) , а во втором в самом начале блока.
Вам же однозначно сказали, после любой исполняемой команды, не обязательно вызов функции да еще с применением этой переменной. Хотите иметь такую радость, как в теле объявлять переменную с типом - включите поддержку плюсов. Нет поддержки? Извините, пишите, как того требует стандарт K&R. ИАР поддерживает. Кейл не знаю, мало работал в нем.
__________________
С уважением,
Vic / ut1wpr
ut1wpr вне форума  
Непрочитано 22.11.2013, 15:20  
nahimovv
Заблокирован
 
Регистрация: 25.04.2013
Сообщений: 1,427
Сказал спасибо: 0
Сказали Спасибо 381 раз(а) в 251 сообщении(ях)
nahimovv на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Сообщение от MaxiMuz79 Посмотреть сообщение
после вызова функций (в которых данная переменная ни как не может быть задействована)
Ещё раз! Стандарт СИ подразумевает определённые правила оформления, последующие раширения стандарта СИ допускают некоторые отклонения от основного стандарта, старенький НI-TECH сразу выдал ошибку на "отсутствие закрывающей скобки предыдущей функции", Cosmic под STM8 тоже вываливается с ошибкой. Поэтому утверждать, что только Keil что-то там неправильно понимает или делает, как минимум, не верно. Не используйте особенности компиляторов и при переносе текста проги на другую платформу/МК "будет вам счастье".

Последний раз редактировалось nahimovv; 22.11.2013 в 15:23.
nahimovv вне форума  
Непрочитано 06.06.2014, 15:59  
MaxiMuz79
Гражданин KAZUS.RUN
 
Аватар для MaxiMuz79
 
Регистрация: 06.04.2010
Адрес: Санкт-Петербург - Волжский
Сообщений: 528
Сказал спасибо: 73
Сказали Спасибо 56 раз(а) в 45 сообщении(ях)
MaxiMuz79 на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Какой стандарт используется в MDK Keil v4.72 ? С89 или С99 ? И есть ли возможность менять их ?
MaxiMuz79 вне форума  
Непрочитано 06.06.2014, 16:22  
niXto
Почётный гражданин KAZUS.RUN
 
Аватар для niXto
 
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,026
Сказал спасибо: 60
Сказали Спасибо 3,941 раз(а) в 2,302 сообщении(ях)
niXto на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Правила хорошего тона - когда все переменные объявляются в самом начале вместе с инклудами и дефайнами, или сразу после этой { кавычки. А не как в анекдоте "Я, белокурая лохудра на розовой Мазде, повернула куда захотела, и тем самым спровоцировала ДТП. С моих слов записано верно"...

Так и самому потом проще разбираться, а не выискивать по всему коду, где и как объявил переменную...
niXto вне форума  
Непрочитано 06.06.2014, 16:29  
_Артём_
Гражданин KAZUS.RUN
 
Регистрация: 16.03.2011
Сообщений: 486
Сказал спасибо: 8
Сказали Спасибо 131 раз(а) в 116 сообщении(ях)
_Артём_ на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Сообщение от MaxiMuz79 Посмотреть сообщение
Какой стандарт используется в MDK Keil v4.72 ? С89 или С99 ? И есть ли возможность менять их ?
Задайте в настройках проекта опцию --c99, тогда будет С99, или --c90, тогда будет С90 (это у него по умолчанию)

Цитата:
The compiler:

Is an optimizing compiler. Command-line options enable you to control the level of optimization.

Compiles:

ISO Standard C:1990 source

ISO Standard C:1999 source

ISO Standard C++:2003 source.
_Артём_ вне форума  
Непрочитано 27.06.2014, 10:20  
papa_n
Временная регистрация
 
Регистрация: 08.01.2007
Сообщений: 92
Сказал спасибо: 17
Сказали Спасибо 9 раз(а) в 9 сообщении(ях)
papa_n на пути к лучшему
Вопрос Re: Вопрос по Keil uVision

Добрый день Уважаемые
Каким Кейлом открыть проэкт
PHP код:
proj.plg
proj.uvgui.andrej
proj.uvopt
proj.uvproj 
это те файлы что есть, ну кроме исходников и хидеров
скачал 8.16 (( надо переносить((
пробовал перенести в ИАР ругается на кучу синтаксиса(обьявление прериваний переменных...)
А надо всего то подправить одну константу и скомпилить заново((
Посоветуйте Куда перенести наиболее быстрее будет
Гранд мерси!
papa_n вне форума  
Непрочитано 21.07.2015, 12:03  
pambaru
Почётный гражданин KAZUS.RUN
 
Регистрация: 24.03.2007
Сообщений: 1,395
Сказал спасибо: 85
Сказали Спасибо 674 раз(а) в 393 сообщении(ях)
pambaru на пути к лучшему
По умолчанию Re: Вопрос по Keil uVision

Вопрос по Keil (4.7, но, наверное, не столь важно).
Использую: y=__REV16(x);
Все компилится, но в текстовом редакторе __REV16 подчеркнуто и восклицательный знак, типа "implicit declaration".
При компиляции же никаких варнингов не выкидывает.
Посмотрел, __REV16 объявлена в core_cmInstr.h, включил include - не помогло, все также.
Может дефайн какой прописать надо?
В принципе то не особо напрягает, но хотелось бы, чтобы было все эстетично, без подчеркиваний в тексте
pambaru вне форума  
 

Метки
keil uvision
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Keil uVision + RTOS (LPC23xx) Seji-01 Микроконтроллеры, АЦП, память и т.д 0 12.03.2010 12:33
Вопрос по Keil uVision lom771 Микроконтроллеры, АЦП, память и т.д 4 30.08.2006 13:38
Вопрос к знатокам Keil mVision2. 011119xx Микроконтроллеры, АЦП, память и т.д 8 07.08.2006 09:02
Эмуляция внешней памяти в Keil uVision GSUS Микроконтроллеры, АЦП, память и т.д 1 10.10.2005 10:02


Часовой пояс GMT +4, время: 18:44.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.