реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Сode Vision AVR, проблемы при переходе на новую версию, Вопрос по работе Сode Vision AVR, версия 2.05.0.
Nikkolaj
сообщение Apr 19 2012, 12:04
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Добрый день.
У меня такой вопрос.
Есть у меня проект, который я когда то сделал на Сode Vision AVR версия 1.25.9.
Контроллер ATmega16.

Возникла необходимость внести изменения в алгоритм.
С Сode Vision AVR я уже давно не работал, перешёл на IAR.
Поставил новую версию Сode Vision AVR, версия 2.05.0.
Компилируется проект нормально.
А при построении проекта выдаёт сообщение: Cant open file: ....\file1.o

Проект состоит из 3 СИ файлов, назовём их
filemain.c
file1.c
file2.c

И двух header. файлов:
file1.h
file2.h
В проект включены только СИ файлы, а header файлы подключены директивой #include.

В окне навигатора, в папке Проекта естественно находятся все три СИ файла.
После компиляции, в папке Проекта так и остаются три СИ файла,
а вот в папке Headers почему то находятся и СИ файлы, и Headers файлы:
file1.c
file1.h
mega16.h
file2.c
file2.h

Почему компилятор помещает file1.c, file2.c в папку Headers я не понимаю.
Пробовал менять конфигурацию проекта, результат такой же.

Посоветуйте что то толковое.

Не знаю, имеет ли это значение, но всё же, проект создавался под ОС Windovs XP, а сейчас стоит Windovs.7
Вроде бы вся информация.


Go to the top of the page
 
+Quote Post
hd44780
сообщение Apr 19 2012, 12:19
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Сейчас специально откомпилил свой старый проект из 1.25 в 2.05 - всё нормально. Как будет на железяке работать - не знаю sm.gif
В папке Headers только .h.
Попробуйте переставить его.. Может криво стал. Могу дать свой дистрибутив.

Сообщение отредактировал hd44780 - Apr 19 2012, 12:20


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Marian
сообщение Apr 19 2012, 13:07
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Цитата(Nikkolaj @ Apr 19 2012, 14:04) *
Cant open file: ....\file1.o

Путь без русских букв?
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение Apr 19 2012, 13:14
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Спасибо за ответ.
Хорошо, дайте Ваш дистрибутив, попробую переставить.

Цитата
Путь без русских букв?


Да, путь без русских букв.
Он вообще формирует только один файл с расширением .о filemain.о
Go to the top of the page
 
+Quote Post
Marian
сообщение Apr 19 2012, 13:26
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 148
Регистрация: 23-02-07
Пользователь №: 25 618



Выложите проект, посмотрим.

Go to the top of the page
 
+Quote Post
hd44780
сообщение Apr 19 2012, 13:57
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 26-08-05
Из: Донецк, ДНР
Пользователь №: 7 980



Цитата(Nikkolaj @ Apr 19 2012, 16:14) *
Хорошо, дайте Ваш дистрибутив, попробую переставить.


Ловите - http://ifolder.ru/30022151
Сами разберётесь, что там к чему rolleyes.gif . Вирусов нет.


--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса.
(с) Мария Эдуарда
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение Apr 20 2012, 09:45
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Добрый день.
Спасибо за дистрибутив, я его скачал, но устанавливать пока не стал.
Я нашёл в чём была ошибка.
Я подключал к проекту все 3 файла в конфигурации по add files, а
в filemain.c у меня были директивы #include file1.c, #include file2.c.
Двойное подключение файлов компилятору и не нравилось.
Сейчас решил переделать правильно.
Из файла filemain.c директивы #include file1.c, #include file2.c удалил.
Добавил файл glob_defs.h для всех #define, и подключил его к нужным файлам.

Посоветуйте пожалуйста,
как праильно поступить с обявлением глобальных переменных,
которые используются в разных файлах.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 20 2012, 10:51
Сообщение #8


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Nikkolaj @ Apr 20 2012, 13:45) *
Я подключал к проекту все 3 файла в конфигурации по add files, а
в filemain.c у меня были директивы #include file1.c, #include file2.c.
Двойное подключение файлов компилятору и не нравилось.

Посоветуйте пожалуйста,
как праильно поступить с обявлением глобальных переменных,
которые используются в разных файлах.


#include name.c очень опасное мероприятие, лучше избегать всячески. Есть случаи, когда это удобно, но это скорее исключения из правил.

Ссылки на глобальные переменные можно собрать в одном заголовочном файле (какой-нибудь globvar.h, не забыть сделать стражи вкючения в нем) и использовать в других файлах с кодом.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение Apr 20 2012, 12:53
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Цитата
Ссылки на глобальные переменные можно собрать в одном заголовочном файле (какой-нибудь globvar.h, не забыть сделать стражи вкючения в нем) и использовать в других файлах с кодом.


Спасибо за ответ.
Я тоже думал обявить все глобальные переменные в одном globvar.h файле.
Что такое СТРАЖИ ВКЛЮЧЕНИЯ, и как ими пользоваться ?

Но в HELP для Сode Vision написано что
обявление глобальных переменных должны быть установлены в файлах с расширением С. ( а, не h )

Цитата из HELP для Сode Vision:
· global variables declarations must be placed in the .C files where necessary
· there's no need to declare global variables, that are not static, in header .H files, because if these files will be #include -ed more than once, the compiler will issue errors about variable redeclarations.

Попробовал обявить их во всех С файлах где они используются, компилятору это не нравится.
Подскажите как правильно.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 20 2012, 13:14
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Nikkolaj @ Apr 20 2012, 15:53) *
Я тоже думал обявить все глобальные переменные в одном globvar.h файле.

Как объявить?
Если так:
Код
unsigned char MyVar;

то не лучшая идея, мягко говоря.



Цитата(Nikkolaj @ Apr 20 2012, 15:53) *
Что такое СТРАЖИ ВКЛЮЧЕНИЯ, и как ими пользоваться ?


Наверное что-то такое:
Код
#ifndef my_inc_included
#define my_inc_included

#endif

Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение Apr 20 2012, 13:25
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Извините, но из последних двух ответов я всё равно не понял,
как правильно обявить глобальные переменные, которые используются в нескольких файлах.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Apr 20 2012, 13:32
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Nikkolaj @ Apr 20 2012, 16:25) *
Извините, но из последних двух ответов я всё равно не понял,
как правильно обявить глобальные переменные, которые используются в нескольких файлах.


В с-файле:
Код
unsigned char MyVar;


В h-файле:
Код
#ifndef my_inc_included
#define my_inc_included
extern unsigned char MyVar;
#endif
Go to the top of the page
 
+Quote Post
Nikkolaj
сообщение Apr 20 2012, 13:50
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467



Что такое my_inc_included ?
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Apr 20 2012, 14:07
Сообщение #14


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Nikkolaj @ Apr 20 2012, 17:50) *
Что такое my_inc_included ?

Страж включения.
Не позволяет несколько раз подключать один и тот же файл. Почитайте книги по языку. А заодно посмотрите заголовочные файлы вашего компилятора. Очень полезное мероприятие. rolleyes.gif

_Артём_ вам уже показал как должно быть. В заголовочном файле только ССЫЛКИ (о чем я и писал) на переменные.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 17:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01449 секунд с 7
ELECTRONIX ©2004-2016