/* pair.h */ #ifndef __PAIR_H__ #define __PAIR_H__ typedef struct SPair Pair; Pair* createPair(int x, int y); void destroyPair(Pair *pair); int getX(Pair *pair); #endif //** __PAIR_H__ ** //******************************************************************************* /* pair.c */ #include #include "pair.h" struct SPair { int x; int y; }; Pair *createPair(int x, int y) { Pair *p = malloc(sizeof(Pair)); p->x = x; p->y = y; return p; } int getX(Pair *p) { return p->x; } void destroyPair(Pair *p) { free(p); } //******************************************************************************* /* program.c */ #include #include "pair.h" int main() { Pair *a = createPair(1, 2); printf("x = %i\n", a->x); // Ilegal access printf("x = %i\n", getX(a)); // This is ok ! destroyPair(a); }