我正在尝试在其构造函数中初始化struct
,但在初始化成员header.length
时,我在最后一行遇到编译器错误。它的尺寸当时是否已知?
这是编译器错误和structure
:
In constructor ‘stDescriptor::stDescriptor()’:
error: expected primary-expression before ‘)’ token
struct stDescriptor {
usb_functionfs_descs_head header;
stDescriptorBody fs_descs;
stDescriptorBody hs_descs;
stDescriptor(){
header.fs_count = 3;
header.magic = cpu_to_le32(FUNCTIONFS_DESCRIPTORS_MAGIC);
header.hs_count = 3;
header.length = cpu_to_le32(sizeof stDescriptor);
}
};
答案 0 :(得分:4)
你需要
header.length = cpu_to_le32(sizeof(stDescriptor));
因为stDescriptor
是类型名称,而不是表达式。
1
sizeof
运算符产生其操作数的对象表示中的字节数。操作数是 表达式,它是未评估的操作数(第5条)或带括号的type-id。 [...]