Есть свой 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
#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 файлов.
Ради интереса, скомпилировал простой промер в борладне, в нем такой проблемы не было.