结构的初始值设定项太多
too many initializers for struct
我目前正在研究一个 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;
错误信息是"too many initializers for 'InstanceBlock [0]'"
在此先感谢您的帮助。
您的数组 xInstance
是一个大小为 0
的数组,因此编译器会报错,因为您试图在其中放入一个元素。
对于你的第二个隐藏问题,有 4 个元素,你漏掉了一些括号:
// Note double brackets
#define DEFAULT_EEprom_Mapping {{ DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK }}
的确,xInstance
是结构中的数组,所以你需要括号来表示结构的初始化列表,括号来表示数组的初始化列表。
我目前正在研究一个 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;
错误信息是"too many initializers for 'InstanceBlock [0]'"
在此先感谢您的帮助。
您的数组 xInstance
是一个大小为 0
的数组,因此编译器会报错,因为您试图在其中放入一个元素。
对于你的第二个隐藏问题,有 4 个元素,你漏掉了一些括号:
// Note double brackets
#define DEFAULT_EEprom_Mapping {{ DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK }}
的确,xInstance
是结构中的数组,所以你需要括号来表示结构的初始化列表,括号来表示数组的初始化列表。