在.C文件中定义结构,并且只在标头中"转发声明"结构.
所以你的.C文件可能包含这个:
struct Car
{
char *brand;
int maxspeed;
};
Run Code Online (Sandbox Code Playgroud)
你的.H文件可能包含这个:
typedef struct Car *CarHandle;
Run Code Online (Sandbox Code Playgroud)
然后编写函数来操作Car(setter,getters,...)并将它们放在与定义struct相同的.C文件中.当然,函数原型应放在标题中.
现在调用者可以使用CarHandle和CarHandle上运行的函数,但是从不会看到Car结构中的内容.