2014-04-01 39 views
0

因此,我做了一些關於這個錯誤的挖掘,我似乎無緣無故地得到它(顯然不能這樣,儘管如此,我決定問)錯誤:取消引用到不完整類型的指針,但一切似乎對我來說很好

在我的.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);時,它會引發此錯誤。

任何想法?

+0

哪裏結構setCDT {...}部分中聲明?它應該在.h文件中包含驅動程序#,否則編譯器將不知道結構的內容應該是什麼,並且會給你一個'不完整類型'的錯誤。 –

+0

SetElementT和MaxVal在哪裏定義? –

+0

你可以發佈整個源代碼嗎? –

回答

3

沒有實際看到的代碼,分析這是困難的,但我猜包含行的文件:

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

是不是在你有struct setCDT定義的文件;而這只是其中包括.h文件與

typedef struct setCDT *setADT; 

如果你想利用其他文件,你需要把struct setCDT定義在.h文件中的成員變量。

1

這似乎是這個問題

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

應該

set=(setADT)malloc(sizeof(struct setCDT)); 
相關問題