Последние ИАРовские компиляторы вообще очень строго стали проверять все до мелочей. Даже ругаются на несоответствие параметров аргументам с
char и
unsigned char, хотя стоит галка "char is unsigned char. Приходится давить этот warning.
А в приведенном примере ИАРовцы правы: объявление union некорректное: а что если программист ошибся и назначил одинаковые имена разным битам?
Цитата(МикроДИП @ Dec 22 2007, 19:30)

Да мне собственно интересно - это что: особенность MCC18 ? Ошибка ? Опечатка ? Просто хотел взять исходник за основу себе в проект, а раз его ИАР не принимает, то прийдётся сейчас все файлы править где эти биты встречаются.
Все править не нужно, уберите только дубликаты объявлений битов:
Код
typedef union _BD_STAT
{
byte _byte;
struct{
unsigned BC8:1;
unsigned BC9:1;
unsigned BSTALL:1;
unsigned DTSEN:1;
unsigned INCDIS:1;
unsigned KEN:1;
unsigned DTS:1;
unsigned UOWN:1;
};
struct{
unsigned :2;
unsigned PID0:1;
unsigned PID1:1;
unsigned PID2:1;
unsigned PID3:1;
unsigned :2;
};
struct{
unsigned :2;
unsigned PID:4; //Packet Identifier
unsigned :2;
};
} BD_STAT;