尝试将值分配给typedef结构变量的成员时出现问题

时间:2011-04-07 22:06:20

标签: c gcc

我已声明了类似的typedef结构:

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'

有谁能告诉我我做错了什么?

3 个答案:

答案 0 :(得分:3)

您有两个名为member_d的成员变量。这可能没有帮助。

一旦我改变了,我就可以得到一个简短的代码片段来编译而没有问题。因此,如果这不能解决您的问题,那么您需要发布一个展示问题的小型完整示例。

答案 1 :(得分:2)

你所做错的不是查看第一个编译器错误 - 这个错误告诉你为什么编译器无法创建fourmembers结构。这个错误是u8不存在。

答案 2 :(得分:0)

嗯,既然你问过你做错了什么的建议:

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