Присвоить значение константам типа структуры в C

У меня есть следующий код, который, как я полагаю, присваивает значение константе struct

в заголовочном файле:

struct madStruct { uint8_t code; uint8_t cluster; }; typedef struct madStruct MadStruct; 

и в файле C

 const MadStruct madStructConst = { .code = 0x00, .cluster = 0x01, }; 

Я хотел бы знать, что должен делать этот код?

Этот код не компилируется в Visual Studio C ++ 2010, как я могу его преобразовать, поэтому я могу скомпилировать как в MingW, так и в Visual Studio C ++ 2010?

Синтаксис был введен в C99 и позволяет явно указывать имя членов при инициализации ( .code и .code известны как обозначение ). Инициализация присваивает члену code значение 0x00 и значение 0x01 члену cluster .

VC поддерживает только C89, поэтому компиляция не выполняется. Поскольку struct имеет только два члена, и оба они инициализируются, вы можете заменить инициализацию:

 const MadStruct madStructConst = { 0x00, 0x01 }; 

без указателей члены инициализируются с указанными значениями в том порядке, в котором члены определены в struct . В этом случае code присваивается 0x00 а cluster присваивается 0x01 , то же самое, что и инициализация с помощью указателей.