我在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 *'时不兼容的类型
如何解决此问题?
答案 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 */
有很多可能性可以设置命名,我不想在这里推荐任何命名,因为它主要是关于:
为不同的事物提供不同的名称。