Listing 1

/*--- test.h ---------------------------------------------*/
#ifdef MAIN
# define EXTERN
#else
# define EXTERN extern
#endif

EXTERN int i ;

/*--- test1.c (main file) --------------------------------*/

#define MAIN

#include "test.h"

void main  (void) ;
void test2 (void) ;

void main(void)
  {
  i = 3 ;
  test2 () ;
  }

#undef MAIN

/*--- test2.c --------------------------------------------*/
#include "test.h"

int printf(const char *, ...);

void test2 (void)
  {
  printf("i is %d\n", i) ;
  }
/* -------------------------------------------------------*/