我的包含文件存在一個小問題,我對問題做了一個簡化的模型。 說我編譯,需要名爲轉發「Typedefing」結構
header.h
頭文件,該文件中有一些來源:
#ifndef HEADER_INCLUDED
#define HEADER_INCLUDED
#include element.h
typedef struct {
Element *list;
} Thing;
#endif
然後我定義一個元素,也需要header.h另一頭文件。
element.h
#ifndef ELEMENT_INCLUDED
#define ELEMENT_INCLUDED
typedef struct Element;
#include header.h
void * func(Thing *myThing);
#endif
然後我遇到了一個問題,因爲element.h不知道什麼類型是什麼;我們還沒有在header.h中達到這個定義,因爲我們需要包含element.h。
我想我也許可以解決我的問題爲「前進typedefing」虛空* FUNC原型樣
typedef struct thing Thing;
前element.h展開,右一件事類型,那麼這只是創建了另一個問題,編譯器會抱怨Thing有不同的類型。
我該如何擺脫這個混亂?
'typedef struct Element;'無效。你的意思是'typedef struct Element Element;'?編譯器對「Thing」的抱怨是什麼? – Potatoswatter
@Patatoswatter實際上它是有效的,它和'struct Element;'意思相同; –