我声明了一个像这样的类型定义结构:
typedef struct {
u8 member_a;
u32 member_d;
u32 member_c;
u16 member_d;
} __attribute__((packed)) fourmembers;
然后,我创建了一个名为"limp"的变量,类型为"fourmembers":
fourmembers limp;
接下来,我尝试给"fourmembers"变量的成员"member_a"赋值,如下所示:
limp.member_a = 0x20;
结果是GCC给出以下错误:
error: 'fourmembers' has no member named 'member_a'
谁能告诉我我做错了什么? 您有两个名为member_d
的成员变量。这可能没有帮助。
一旦我改变了它,我就可以得到一个简短的代码片段来编译而不会出现问题。因此,如果这不能解决您的问题,您需要发布一个小而完整的示例来演示问题。
你做错了什么是不看第一个编译器错误-一个告诉你为什么编译器不能创建fourmembers
结构体。这个错误将是u8
不存在
嗯,既然你问我你做错了什么:
- 为固定大小的类型使用非标准名称而不是标准名称
uint8_t
uint16_t
等。这实际上是你编译错误的来源。 - 使用
__attribute__((packed))
。就当你没听说过。它总是错的。 - 没有给我们一个足够完整的代码片段来确定错误的原因。