|
|
  |
Сode Vision AVR, проблемы при переходе на новую версию, Вопрос по работе Сode Vision AVR, версия 2.05.0. |
|
|
|
Apr 19 2012, 12:04
|
Частый гость
 
Группа: Участник
Сообщений: 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 Вроде бы вся информация.
|
|
|
|
|
Apr 19 2012, 13:07
|

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

|
Цитата(Nikkolaj @ Apr 19 2012, 14:04)  Cant open file: ....\file1.o Путь без русских букв?
|
|
|
|
|
Apr 19 2012, 13:14
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 25-09-08
Пользователь №: 40 467

|
Спасибо за ответ. Хорошо, дайте Ваш дистрибутив, попробую переставить. Цитата Путь без русских букв? Да, путь без русских букв. Он вообще формирует только один файл с расширением .о filemain.о
|
|
|
|
|
Apr 19 2012, 13:57
|

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

|
Цитата(Nikkolaj @ Apr 19 2012, 16:14)  Хорошо, дайте Ваш дистрибутив, попробую переставить. Ловите - http://ifolder.ru/30022151Сами разберётесь, что там к чему  . Вирусов нет.
--------------------
Чтобы возить такого пассажира, необходим лимузин другого класса. (с) Мария Эдуарда
|
|
|
|
|
Apr 20 2012, 10:51
|

Начинающий профессионал
    
Группа: Свой
Сообщений: 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, не забыть сделать стражи вкючения в нем) и использовать в других файлах с кодом.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
Apr 20 2012, 12:53
|
Частый гость
 
Группа: Участник
Сообщений: 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. Попробовал обявить их во всех С файлах где они используются, компилятору это не нравится. Подскажите как правильно.
|
|
|
|
|
Apr 20 2012, 13:14
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Apr 20 2012, 13:32
|
Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Apr 20 2012, 14:07
|

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

|
Цитата(Nikkolaj @ Apr 20 2012, 17:50)  Что такое my_inc_included ? Страж включения. Не позволяет несколько раз подключать один и тот же файл. Почитайте книги по языку. А заодно посмотрите заголовочные файлы вашего компилятора. Очень полезное мероприятие. _Артём_ вам уже показал как должно быть. В заголовочном файле только ССЫЛКИ (о чем я и писал) на переменные.
--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|