2013-10-19 102 views
1

我剛讀了一個開源。其中,我看到了一些代碼,這讓我不熟悉。所以它是關於結構的東西:純C結構奇怪

struct _NameStruct; 

typedef struct _NameStruct NameStruct 

然後,他們(開源)使用NameStruct來包含一些變量。我不知道爲什麼struct _NameStruct還沒有定義一些變量,所以他們如何使用它?

+0

檢查包含文件以查看它的定義 –

+1

@Invoker:只有當您需要分配給結構的成員或需要結構的大小等時,才需要定義。要聲明指向它的指針,細節不是必需的,因爲指針的大小將基於平臺而不是結構,因此被允許。 – legends2k

回答

5

如果仔細閱讀代碼,您可能會發現它們只使用指向數據類型的指針。它可能是一個不透明的數據類型,所以你可以傳遞一個指向它的指針,但實際上並不知道它是如何實現的。

這些通常用於只有庫需要知道結構實現的句柄。

+1

+1另請參閱[柴郡貓](http://en.wikipedia.org/wiki/Opaque_pointer) – ckhan