Проблема при попытке присвоить значение члену переменной типа typedef - PullRequest
1 голос
/ 08 апреля 2011

Я объявил структуру typedef следующим образом:

typedef struct {
    u8  member_a;
    u32 member_d;
    u32 member_c;
    u16 member_d;
} __attribute__((packed)) fourmembers;

Затем я создал переменную с именем "limp" типа "fourmembers":

fourmembers limp;

Я пытался присвоить значение члену "member_a" переменной "fourmembers" следующим образом:

limp.member_a = 0x20;

В результате GCC выдал следующую ошибку:

error: 'fourmembers' has no member named 'member_a'

Может ли кто-нибудь сообщить мне, что я делаю не так?

Ответы [ 3 ]

3 голосов
/ 08 апреля 2011

У вас есть две переменные-члены, называемые member_d.Это, вероятно, не помогает.

Как только я изменил это, я могу получить короткий фрагмент кода для компиляции без проблем.Так что, если это не решит вашу проблему, вам нужно будет опубликовать небольшой полный пример, демонстрирующий проблему.

2 голосов
/ 08 апреля 2011

То, что вы делаете неправильно, - это не ошибка first compiler - та, которая говорит вам, почему компилятор не смог создать структуру fourmembers. Эта ошибка будет в том, что u8 не существует.

0 голосов
/ 08 апреля 2011

Хм, так как вы спросили совета о том, что вы делаете неправильно:

  1. Использование нестандартных имен для типов фиксированного размера вместо стандартных имен uint8_t uint16_t и т. Д. Этособственно источник вашей ошибки компиляции.
  2. Использование __attribute__((packed)).Забудь, что ты когда-либо узнал об этом.Это всегда неправильно.
  3. Не дает нам достаточно полный фрагмент кода, чтобы определить причину ошибки.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...