我在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 *”时不兼容的类型


我该如何解决这个问题?

最佳答案

关于什么:

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 */


有很多可能的命名方式可以设置,我不想在这里推荐任何命名方式,因为它主要涉及以下内容:

给不同的事物起不同的名字。

10-05 19:52