top/contents search
For example, you might create this header file, "mumbletyfrog.h", for an abstract type mumbletyfrog:
struct mumbletyfrog;
extern struct mumbletyfrog *makefrog(void);
extern void setcroaks(struct mumbletyfrog *, int);
The caller would include the header file, and manipulate pointers to struct mumbletyfrog:
#include "mumbletyfrog.h"
struct mumbletyfrog *frogp;
frogp = makefrog();
setcroaks(frogp, 3);
The code that defines the mumbletyfrog type, presumably in mumbletyfrog.c, actually defines the structure:
#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++)
Another popular strategy is to use a typedef, so that the keyword struct can be omitted; see questions 2.1 and 2.2.


contents search
about this FAQ list   about eskimo   search   feedback   copyright

Hosted by Eskimo North