В настоящее время я работаю над файловой структурой EEprom, которая заполняется значениями по умолчанию при компиляции. Все прекрасно работает до сих пор для одной структуры, за исключением, и я не могу найти ошибку ..слишком много инициализаторов для struct
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] »«
Заранее благодарим за любую помощь.
Что это - C или C++? – molbdnilo
Ну, один больше нуля. Во всяком случае, C++ не разрешает автоматические массивы хранения с нулевой длиной. – juanchopanza
Пожалуйста, правильно пометьте язык: вот почему этот хороший вопрос остается без изменений. – Bathsheba