Перейти к содержанию
    

Сode Vision AVR, проблемы при переходе на новую версию

Добрый день.

У меня такой вопрос.

Есть у меня проект, который я когда то сделал на С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

Вроде бы вся информация.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сейчас специально откомпилил свой старый проект из 1.25 в 2.05 - всё нормально. Как будет на железяке работать - не знаю :)

В папке Headers только .h.

Попробуйте переставить его.. Может криво стал. Могу дать свой дистрибутив.

Изменено пользователем hd44780

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за ответ.

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

 

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

 

Да, путь без русских букв.

Он вообще формирует только один файл с расширением .о filemain.о

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Ловите - http://ifolder.ru/30022151

Сами разберётесь, что там к чему :rolleyes: . Вирусов нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

Спасибо за дистрибутив, я его скачал, но устанавливать пока не стал.

Я нашёл в чём была ошибка.

Я подключал к проекту все 3 файла в конфигурации по add files, а

в filemain.c у меня были директивы #include file1.c, #include file2.c.

Двойное подключение файлов компилятору и не нравилось.

Сейчас решил переделать правильно.

Из файла filemain.c директивы #include file1.c, #include file2.c удалил.

Добавил файл glob_defs.h для всех #define, и подключил его к нужным файлам.

 

Посоветуйте пожалуйста,

как праильно поступить с обявлением глобальных переменных,

которые используются в разных файлах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я подключал к проекту все 3 файла в конфигурации по add files, а

в filemain.c у меня были директивы #include file1.c, #include file2.c.

Двойное подключение файлов компилятору и не нравилось.

 

Посоветуйте пожалуйста,

как праильно поступить с обявлением глобальных переменных,

которые используются в разных файлах.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ссылки на глобальные переменные можно собрать в одном заголовочном файле (какой-нибудь 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.

 

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

Подскажите как правильно.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я тоже думал обявить все глобальные переменные в одном globvar.h файле.

Как объявить?

Если так:

unsigned char MyVar;

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

 

 

 

Что такое СТРАЖИ ВКЛЮЧЕНИЯ, и как ими пользоваться ?

 

Наверное что-то такое:

#ifndef my_inc_included
#define my_inc_included

#endif

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, но из последних двух ответов я всё равно не понял,

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, но из последних двух ответов я всё равно не понял,

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

 

В с-файле:

unsigned char MyVar;

 

В h-файле:

#ifndef my_inc_included
#define my_inc_included
extern unsigned char MyVar;
#endif

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое my_inc_included ?

Страж включения.

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...