将指针传递给C中的私有结构?

时间:2010-12-10 05:47:34

标签: c gcc struct typedef forward-declaration

如何将指针传递给具有私有定义的结构,而不使用struct添加指针类型?

例如,这有效:

typedef struct Handle {
    Ino ino;
} Handle;

bool handle_open(Handle **);

但是,如果我将结构定义移动到源文件中,则其他源文件将被强制使用struct Handle *,而不是Handle *

3 个答案:

答案 0 :(得分:5)

你可以typedef struct Handle Handle;。在这种情况下,Handle是不完整的类型(就像struct Handle)。

答案 1 :(得分:2)

这应该在标题中正常:

struct _Handle;
typedef struct _Handle Handle;

然后,您可以将_Handle的实际定义放在实际操作结构的文件的主体中。

答案 2 :(得分:0)

  

如果我将struct定义移动到源文件中,其他源文件将被强制使用struct Handle *,而不是Handle *

然后typedef指针,而不是(或除了)结构。