слишком много инициализаторов для структуры

В настоящее время я работаю над файловой структурой EEprom, которая при компиляции заполняется значениями по умолчанию. Пока все работает отлично, за исключением одной структуры, и я не могу найти ошибку ..

typedef struct { // ===== instance parameters =====
BOOL bInstanceActive;
BYTE nInstanceGrp[4];
BYTE nEventFilter;
BYTE nEventScheme;
BYTE nEventPriority;
BYTE nShortMul;
BYTE nDoubleMul;
BYTE nRepeatMul;
BYTE nStuckMul;
BYTE nDummy[3];
} InstanceBlock;
#define DEFAULT_INSTANCE_BLOCK  {1, {255,255,255,255}, 244, 0, 2, 15, 5, 10, 30, {0}}

Типы «BOOL» и «BYTE» являются беззнаковыми символами.

различные структуры затем объединяются в одну структуру EEprom_Mapping (но в настоящее время у меня есть только одна, все остальные работают нормально):

typedef struct {
InstanceBlock xInstance[1];    ** edited should be 1 instead of 0
} EEprom_Mapping;
#define DEFAULT_EEprom_Mapping { DEFAULT_INSTANCE_BLOCK }

Затем инициализируется следующим образом:

EEprom_Mapping xEE __attribute__((section(".eeprom"))) = DEFAULT_EEprom_Mapping;

Сообщение об ошибке «слишком много инициализаторов для« InstanceBlock [0] »»

Заранее благодарю за любую помощь.

-5

Решение

Для вашего второго скрытого вопроса, с 4 элементами, вы пропустите несколько скобок:

// Note double brackets
#define DEFAULT_EEprom_Mapping  {{ DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK }}

демонстрация

В самом деле, xInstance это массив внутри структуры, поэтому вам нужны скобки для списка инициализаторов структуры и скобки для списка инициализаторов массива.

0

Другие решения

Ваш массив xInstance массив размеров 0Таким образом, компилятор жалуется, потому что вы пытаетесь вписать в него один элемент.

1