错误:取消引用指向不完整类型的指针,但对我来说一切似乎都很好

时间:2014-04-01 04:56:45

标签: c

所以我做了一些关于这个错误的挖掘,我似乎无缘无故地得到它(显然不是这样的,尽管我决定这样做)

在我的.h文件中,我声明了

typedef struct setCDT *setADT;

在初始化中我有

struct setCDT{
    setElementT x[MaxVal];
    int len;
};

setADT setNew(){
    setADT set;
    set=(setADT)malloc(sizeof *set);
    set->len=0;
    return(set);
}

我稍后在代码中更改了值,如果我需要发布,我可以发布,但据我所知,这与我如何设置结构有关。

在我的驱动程序中,我有setADT A = setNew();但是当我调用printf("%d", A->len);时,它会抛出此错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

如果没有真正看到代码,分析这个很难,但我猜测包含该行的文件:

printf("%d", A->len)

不是您拥有struct setCDT定义的文件;相反,它只包含带有

.h文件
typedef struct setCDT *setADT;

如果要操纵其他文件中的成员变量,则需要将struct setCDT定义放在.h文件中。

答案 1 :(得分:1)

这似乎是个问题

 set=(setADT)malloc(sizeof *set);

应该是

 set=(setADT)malloc(sizeof(struct setCDT));