初始化类型错误时不兼容的类型

时间:2013-07-01 08:18:02

标签: c pointers structure incompatibletypeerror

我在C中遇到指针和结构的问题。让我们说:

typedef struct mdata{
   int a;
   int b;
    ...
} pred_data_attr;

typedef struct mConfig{
   pred_data_attr mdata;
   ...
} mConfig;

struct control{
   struct mConfig mcfg;
   ...
};

INT32 rdfapp(struct control *rdf){
    pred_data_attr* mdata = rdf->mcfg.mdata;
    ...
}

我收到了这个错误:

  使用'pred_data_attr'类型初始化类型'struct pred_data_attr *'时

不兼容的类型

如何解决此问题?

1 个答案:

答案 0 :(得分:3)

怎么样:

INT32 rdfapp(struct control *rdf)
{
  pred_data_attr * mdata = &rdf->mcfg.mdata;

代码中的命名是另一个很好的例子,说明不恰当的命名会导致烦恼和错误。

将不同的东西命名为相同并不是一个好主意:

pred_data_attr * mdata /* here mdata is a pointer */

pred_data_attr mdata; /* here mdata is the instance of a structure */

有很多可能性可以设置命名,我不想在这里推荐任何命名,因为它主要是关于:

为不同的事物提供不同的名称。