Should variable definition be in header files?

One thing that I’ve used in the past (when global variables were in vogue):

var.h file:

...
#ifdef DEFINE_GLOBALS
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN int global1;
EXTERN int global2;
...

Then in one .c file (usually the one containing main()):

#define DEFINE_GLOBALS
#include "var.h"

The rest of the source files just include “var.h” normally.

Notice that DEFINE_GLOBALS is not a header guard, but rather allows declaring/defining the variables depending on whether it is defined. This technique allows one copy of the declarations/definitions.

Leave a Comment