diff --git a/src/helper/command.h b/src/helper/command.h
index c574efd507e2f03511e4b84e1c46f4cc5a4a604f..ba825bcb48485a9e61d22efc0cd943b6908ffb57 100644
--- a/src/helper/command.h
+++ b/src/helper/command.h
@@ -35,9 +35,10 @@
 #include "jim.h"
 #endif
 
-/* To achieve C99 printf compatibility in MinGW, gnu_printf should */
-/* be used for __attribute__((format( ... )))                      */
-#ifdef IS_MINGW
+/* To achieve C99 printf compatibility in MinGW, gnu_printf should be
+ * used for __attribute__((format( ... ))), with GCC v4.4 or later
+ */
+#if (defined(IS_MINGW) && (((__GNUC__ << 16) + __GNUC_MINOR__) >= 0x00040004))
 #define PRINTF_ATTRIBUTE_FORMAT gnu_printf
 #else
 #define PRINTF_ATTRIBUTE_FORMAT printf
diff --git a/src/helper/log.h b/src/helper/log.h
index 8f6ac7706d365afd1c01a73e7187d71d5ae02cc9..f43e1e6cb0ba8c8bf3df1fc65c0a549b524a0d42 100644
--- a/src/helper/log.h
+++ b/src/helper/log.h
@@ -28,9 +28,10 @@
 
 #include "command.h"
 
-/* To achieve C99 printf compatibility in MinGW, gnu_printf should */
-/* be used for __attribute__((format( ... )))                      */
-#ifdef IS_MINGW
+/* To achieve C99 printf compatibility in MinGW, gnu_printf should be
+ * used for __attribute__((format( ... ))), with GCC v4.4 or later
+ */
+#if (defined(IS_MINGW) && (((__GNUC__ << 16) + __GNUC_MINOR__) >= 0x00040004))
 #define PRINTF_ATTRIBUTE_FORMAT gnu_printf
 #else
 #define PRINTF_ATTRIBUTE_FORMAT printf