diff --git a/src/doomtype.h b/src/doomtype.h
index a365e3c56c687350136dfc2dc869f17a4f40e5cd..6bc563527775983c185113f01dbca2092ecebd26 100644
--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -307,7 +307,11 @@ typedef UINT32 tic_t;
 #define FUNCTARGET(X)  __attribute__ ((__target__ (X)))
 #endif
 #endif
+#if defined (__MINGW32__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#define ATTRPACK __attribute__((packed, gcc_struct))
+#else
 #define ATTRPACK __attribute__((packed))
+#endif
 #define ATTRUNUSED __attribute__((unused))
 #ifdef _XBOX
 #define FILESTAMP I_OutputMsg("%s:%d\n",__FILE__,__LINE__);