// projdata.h int something; char filename[255]; ... // projlib.c #include "projdata.h" int somefunc() { ... strupr( filename ); ... return 0; } void someotherfunc ( int n ) { ... something = n; ... return; } #### // projdata.h struct { int something; char filename[255]; ... } projdata, *pprojdata; // projlib.c #include "projdata.h" int somefunc( pprojdata p ) { ... strcat( p->filename, ... ); ... return 0; } void someotherfunc ( pprojdata p, int n ) { ... p->something = n; ... return; } // main.c int main ( ... ) projdata pd; int n; ... n = somefunc( &pd ); ... someotherfunc( &pd, n ); ... }