PIC - Accessing udata through pointer in another file
The compiler doesn't know where clockings is in eeprom.c.  There's nothing to tell the compiler that clockings is in clock.c.

In order to fix this, move extern Clocking *clocking; from eeprom.c into defines.h.  This way, clock.c and eeprom.c know that clockings exists.  The declaration of clockings should be in the header.  The definition should be in clock.c (as it currently is).

Here's a link for an explanation on extern: http://www.geeksforgeeks.org/understanding-extern-keyword-in-c/