Listing 3

/* ---------------------- CUJ.H ----------------------------- */

#ifdef MAIN
#define EXTERN
#define INIT(val) = val
#else
#define EXTERN extern
#define INIT(ignored)
#endif

EXTERN int i INIT(5);

/* ---------------------- CUJ.C ----------------------------- */

#include <stdio.h>
#define MAIN
#include "cuj.h"

main()
  {
  printf("The value of i in main() is %d.\n", i);
  cuj_fnx();
  }
/* ---------------------- CUJ_FNX.C ------------------------- */

#include <stdio.h>
#include "cuj.h"

cuj_fnx()
  {
  printf("The value of i in cuj_fnx() is %d.\n", i);
  }