This works fine for me. It has worked fine for more years than I care to remember.
In my area, it is SOP to do something like:
(in the header file)
#ifdef _MYFILE_C_
#define EXTERN
#else
#define EXTERN extern
#endif
EXTERN int my_var;
(in the main code module)
#define _MYFILE_C_
#include "myfile.h>
This ensures the globals are defined only in "myfile.c",
but declared extern everywhere else.
Cheers,
Ron