取消引用指向不完整类型的指针 - typedef结构

时间:2016-05-10 17:56:36

标签: c database struct error-handling typedef

我正在寻找代码中的错误(在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 个答案:

答案 0 :(得分:0)

我尝试了你的代码。我和你有类似的问题。

问题在于您的代码,当您在堆中分配结构时,返回的值被错误分配,因为malloc返回一个指针。

我的代码如下:

Account* account = (account*)malloc(sizeof(account));

第二件事: 作为类型定义,我没有将结构定义为指针。

typedef struct account_t Account;

试试这个,我希望这些信息有用!

答案 1 :(得分:-2)

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

答案 2 :(得分:-3)

我会说,你必须做这样的事情:

帐户帐户=(帐户)malloc(sizeof(* account));