diff --git a/src/deh_tables.c b/src/deh_tables.c
index 1ed385e7baffe6be359c296eea44bc9517f96c7f..5733d9b0ede7466fab11fc0db2094f12d5f3d45b 100644
--- a/src/deh_tables.c
+++ b/src/deh_tables.c
@@ -25,6 +25,11 @@
 
 #include "deh_tables.h"
 
+char *FREE_STATES[NUMSTATEFREESLOTS];
+char *FREE_MOBJS[NUMMOBJFREESLOTS];
+char *FREE_SKINCOLORS[NUMCOLORFREESLOTS];
+UINT8 used_spr[(NUMSPRITEFREESLOTS / 8) + 1]; // Bitwise flag for sprite freeslot in use! I would use ceil() here if I could, but it only saves 1 byte of memory anyway.
+
 const char NIGHTSGRADE_LIST[] = {
 	'F', // GRADE_F
 	'E', // GRADE_E
diff --git a/src/deh_tables.h b/src/deh_tables.h
index 28e0ad927b06bc66cfc39b20a593f309ef5ffc09..2c6b3e20407ec454a47a9b301fcf5003cb4220a8 100644
--- a/src/deh_tables.h
+++ b/src/deh_tables.h
@@ -20,10 +20,10 @@
 
 // Free slot names
 // The crazy word-reading stuff uses these.
-char *FREE_STATES[NUMSTATEFREESLOTS];
-char *FREE_MOBJS[NUMMOBJFREESLOTS];
-char *FREE_SKINCOLORS[NUMCOLORFREESLOTS];
-UINT8 used_spr[(NUMSPRITEFREESLOTS / 8) + 1]; // Bitwise flag for sprite freeslot in use! I would use ceil() here if I could, but it only saves 1 byte of memory anyway.
+extern char *FREE_STATES[NUMSTATEFREESLOTS];
+extern char *FREE_MOBJS[NUMMOBJFREESLOTS];
+extern char *FREE_SKINCOLORS[NUMCOLORFREESLOTS];
+extern UINT8 used_spr[(NUMSPRITEFREESLOTS / 8) + 1]; // Bitwise flag for sprite freeslot in use! I would use ceil() here if I could, but it only saves 1 byte of memory anyway.
 
 #define initfreeslots() {\
 	memset(FREE_STATES,0,sizeof(char *) * NUMSTATEFREESLOTS);\