尝试将值赋给类型定义的struct变量的成员时出现问题



我声明了一个像这样的类型定义结构:

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不存在

嗯,既然你问我你做错了什么:

  1. 为固定大小的类型使用非标准名称而不是标准名称uint8_t uint16_t等。这实际上是你编译错误的来源。
  2. 使用__attribute__((packed))。就当你没听说过。它总是错的。
  3. 没有给我们一个足够完整的代码片段来确定错误的原因。

最新更新