Цитата(Aiva @ Mar 21 2010, 04:43)

В чужом проекте (Иаровском демо-проекте, если интересно), в файле заголовков определен такой себе тип:
Это одно из расширений IAR, анонимные структуры, по аналогии с анонимными объединениями.
Из EWAVR_CompilerReference.pdf:
"C++ includes a feature named anonymous unions. The AVR IAR C/C++ Compiler allow
a similar feature for both structs and unions.
An anonymous structure type (that is, one without a name) defines an unnamed object
(and not a type) whose members are promoted to the surrounding scope. External
anonymous structure types are allowed."Если не пользоваться ни тем ни другим, то придётся объявлять структуру так:
Код
typedef struct _MADCTR_Data_t {
union
{
Int8U MemDataAccCtrl;
struct
{
Int8U : 3;
Int8U RGB : 1;
Int8U ML : 1;
Int8U MV : 1;
Int8U MX : 1;
Int8U MY : 1;
} s;
} u;
} MADCTR_Data_t, *pMADCTR_Data_t;
и обращаться к полю MX вот таким образом: MADCTR_Data_t
.u.s.MX
Использование анонимного union позволяет убрать
.u , а IAR-овское расширение ещё и обойтись без
.sЕсли компилятор ругнулся два раза, то он, похоже, не поддерживает не только анонимных структур, но и объединений тоже.
Russia est omnis divisa in partes octo.