struct的初始化项太多
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"answers"BYTE"都是unsigned char。
不同的结构体然后组合成一个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]的初始化项太多"
提前感谢您的帮助。
您的数组xInstance
是一个大小为0
的数组,因此编译器会报错,因为您试图在其中放入一个元素
对于第二个隐藏问题,有4个元素,您错过了一些括号:
// Note double brackets
#define DEFAULT_EEprom_Mapping {{ DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK, DEFAULT_INSTANCE_BLOCK }}
演示实际上,xInstance
是结构体内部的数组,因此需要为结构体的初始化列表和数组的初始化列表使用方括号。
相关文章:
- 多成员Constexpr结构初始化
- 不能将复制初始化与隐式转换的多个步骤一起使用
- 错误:字符数组的初始值设定项太多
- 在main()之外初始化std::vector会导致性能下降(多线程)
- 对象实例化调用构造函数的次数太多
- 初始化多个未知基类
- 有没有办法一次声明相同类型的多个对象,并通过一个表达式立即使用相同的右值初始化它们?
- 我们是否需要为 C++ 中的多个函数初始化多个模板?
- 在C++的一行中初始化多个变量
- C++:数组<>初始值设定项太多
- 初始化器值太多
- 工会结构阵列的初始化太多
- C 错误:初始化量太多
- C++-数组的初始化程序太多
- C++:为“char [4]”数组错误获取太多初始值设定项
- 数组的初始化程序太多错误
- char[9][9]的初始化式太多
- 编译错误:没有类模板,太多初始化器,没有匹配函数
- 初始化器太多错误
- struct的初始化项太多