Доброго времени суток!
Помогите,плиз,победить такую ситуацию - объявил битовые поля в анонимных структуре и объединении:
Код
//defs.h
#ifndef _DEFS_H
#define _DEFS_H
union{
unsigned char letters;
struct{
unsigned char alpha :1;
unsigned char bravo :1;
unsigned char :1;
unsigned char :1;
unsigned char :1;
unsigned char :1;
unsigned char :1;
unsigned char :1;
};
};
#endif
Включил этот хидер в модули main.c
Код
//main.c
#include <io16f628.h>
#include "defs.h"
extern void one(void);
void main(void)
{
alpha = 1;
one();
}
и one.c
Код
//one.c
#include <io16f628.h>
#include "defs.h"
void one(void)
{
bravo = 1;
if(alpha)
bravo = 0;
return;
}
Линкеру это дело не понравилось и он выдал:
Код
Linking...
XLINK: E:\Project\TEST\Debug\Obj\handler.r39 E:\Project\TEST\Debug\Obj\main.r39 E:\Project\TEST\Debug\Obj\one.r39 -o E:\Project\TEST\Debug\Exe\test.d39 -rt -l E:\Project\TEST\Debug\List\test.map -xes -IE:\XTools\IAR\PIC221C\PICmicro\LIB\ -f E:\Project\TEST\test.xcl
Error[e27]: Entry "_A_letters" in module main ( E:\Project\TEST\Debug\Obj\main.r39 ) redefined in module one ( E:\Project\TEST\Debug\Obj\one.r39 )
Total number of errors: 1
Total number of warnings: 0
Смотрю в словарик ругательств XLINK
Код
27 Entry entry in module module (file) redefined in module module (file)
There are two or more entries with the same name. Linker aborts immediately.
© IAR Systems 1998
Вот я и недоумеваю - вроде ведь все сделано по-науке,на аналогичные объявления полей и структур в io16f628.h линкер не гавкает, как его угомонить?
Причина редактирования: Оформление кода + излишнее цитирование.