top/contents search
例如,您可以创建此头文件,"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.12.2

返回


contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管