Старичёк IAR v2.28 позволял многократно преопредилять порты микроконтроллера например:
Код
__no_init volatile __io union
{
unsigned char Uni_Hi;// Control signals
struct
{
unsigned char P_B0:1;
unsigned char P_B1:1;
unsigned char P_B2:1;
unsigned char P_B3:1;
unsigned char P_B4:1;
unsigned char White_LED:1;
unsigned char RxGreen_LED:1;
unsigned char RxRed_LED:1;
};
} @ 0x18;// PortB
{
unsigned char Uni_Hi;// Control signals
struct
{
unsigned char P_B0:1;
unsigned char P_B1:1;
unsigned char P_B2:1;
unsigned char P_B3:1;
unsigned char P_B4:1;
unsigned char White_LED:1;
unsigned char RxGreen_LED:1;
unsigned char RxRed_LED:1;
};
} @ 0x18;// PortB
Он даже не ругался, если два одинаковых переопределения были в одном файле.
v5.11 же ругался до тех пор, пока не отключил из программы файл IOAVR.h. Пришлось руками набить все нужные ресурсы.
Вроде бы и не сложно, но как-то не красиво. Высока вероятность ошибки, которую ух как долго придётся искать.
Как исключить конфликты между стандартными определениями портов и своими собственными?
Заранее спасибо!