Разыменование указателя на неполный тип - typedef struct
Я ищу ошибку в своем коде (в C) и ничего не нахожу. Я просмотрел много блогов и перепробовал много советов, но ничего не помогло.
Я закодировал это:
typedef struct Account_t *Account;
struct Account_t {
Customer customer;
Realtor realtor;
Offer offer;
};
в то время как Риэлтор, Клиент и Предложение четко определены и включены в файл.h. Я получаю сообщение об ошибке "разыменование указателя на неполный тип" struct Account_t "", когда я пишу:
Account account = malloc(sizeof(*account));
Пожалуйста, помогите мне найти проблему!
3 ответа
Я бы сказал, что вы должны сделать что-то вроде этого:
Account account = (Account) malloc (sizeof (* account));
Я опробовал твой код. И у меня была такая же проблема, как и у вас.
Проблема в вашем коде: когда вы размещаете структуру в куче, возвращаемое значение присваивается неправильно, потому что malloc возвращает указатель.
мой код выглядит так:
Account* account = (account*)malloc(sizeof(account));
И второе: как определение типа я не определяю структуру как указатель.
typedef struct account_t Account;
Попробуйте это, я надеюсь, что эта информация полезна!
typedef struct Account_t *Account;
struct Account_t {
Customer customer;
Realtor realtor;
Offer offer;
};
Первая строка определена Account
быть указателем наstruct Account_t
, Однако в этот момент struct Account_t
не определено
Вы должны сначала определить struct
а затем typedef
,
struct Account_t {
Customer customer;
Realtor realtor;
Offer offer;
};
typedef struct Account_t *Account;
Теперь вы можете счастливо использовать Account
,