diff --git a/src/target/arm11.h b/src/target/arm11.h
index c2607a6d6ff5ddfa6d2899131ef1edc6f18f84b3..818db766a32679449665bbbfd22fbaedacd4709c 100644
--- a/src/target/arm11.h
+++ b/src/target/arm11.h
@@ -33,15 +33,12 @@
     type * variable = calloc(1, sizeof(type) * items)
 
 
-/* Don't know exactly when %zu was added to glibc (CVS says in 1998).
-   Assume for now that its between GCC versions 3.x.x and 4.x.x .
-   MinGW's GCC 3.4.5 comes with a glibc that doesn't support it.
-*/
+/* For MinGW use 'I' prefix to print size_t (instead of 'z') */
 
-#if __GNUC__ > 3
+#ifndef __MSVCRT__
 #define ZU		"%zu"
 #else
-#define ZU		"%u"
+#define ZU		"%Iu"
 #endif