2013-10-19 61 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