例如,您可以创建此头文件,"mumbletyfrog.h",用于抽象类型mumbletyfrog:
struct mumbletyfrog;
extern struct mumbletyfrog *makefrog(void);
extern void setcroaks(struct mumbletyfrog *, int);
调用者会包含头文件,并操作指向struct mumbletyfrog:
#include "mumbletyfrog.h"
...
struct mumbletyfrog *frogp;
frogp = makefrog();
setcroaks(frogp, 3);
croaker(frogp);
的代码,该代码定义了mumbletyfrog类型,可能在mumbletyfrog.c中,实际上定义了结构#include "mumbletyfrog.h"
struct mumbletyfrog
{
char *name;
int ncroaks;
};
struct mumbletyfrog *makefrog(void)
{
struct mumbletyfrog *frogp = malloc(sizeof(struct mumbletyfrog));
if(frogp == NULL)
return NULL;
frogp->name = NULL;
frogp->ncroaks = 0;
return frogp;
}
void setcroaks(struct mumbletyfrog *frogp, int n)
{
frogp->ncroaks = n;
}
void croaker(struct mumbletyfrog *frogp)
{
int i;
for(i = 0; i < frogp->ncroaks; i++)
printf("ribbet\n");
}
另一种流行的策略是使用 typedef,这样就可以省略关键字struct;请参阅问题 2.1 和 2.2。
返回
关于此 FAQ 列表 关于 Eskimo 搜索 反馈 版权
由
托管