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

 
 
> Странности KEIL
artur_off
сообщение Jan 9 2010, 09:47
Сообщение #1


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

Группа: Свой
Сообщений: 118
Регистрация: 24-05-08
Из: Odessa
Пользователь №: 37 784



Я понимаю, что вопрос возможно дилетантский, но выхода нет.

Есть свой h файл с глобальной переменной и дефайнами:

Код
#ifndef _STATE_OF_ENGINE_H_
#define _STATE_OF_ENGINE_H_

#define START_ENGINE    1
#define STOP_ENGINE        2
#define ROTATION_C        3
#define ROTATION_CC        4

vu8 state_of_engine = STOP_ENGINE;

#endif


этот файл подключается в двух файлах, переменная state_of_engine в этих файлах объявлена как extern. При линковке выдается следующая ошибка:

.\output\MC.axf: Error: L6200E: Symbol state_of_engine multiply defined (by main.o and 91x_it.o).

я нашел один выход, но он не оптимальный. его суть заключается вот в чем. все дефайны из этого файла переносятся в другой h файл, этот файл подключается везде где необходимы эти дефайны, а файл с переменной state_of_engine подключается только один раз в любом из сишных файлов, например в main.c.

В таком случае ошибок при линковке нет, но этот способ не оптимальный, так как требует создавать несколько h файлов.

Ради интереса, скомпилировал простой промер в борладне, в нем такой проблемы не было.

Сообщение отредактировал artur_off - Jan 9 2010, 09:51


--------------------
 Big time. 
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:36
Рейтинг@Mail.ru


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