title: C program shows %zu after conversion to Windows
body: <p>I complied a linux program on windows via Mingw. However, the output of the program looks different on Windows than on Linux. </p>
  
  <p>For example, on Windows the output is this (I get 'zu' instead of real numbers):</p>
  
  <pre><code>Approximated minimal memory consumption:
  Sequence        : zuM
  Buffer          : 1 X zuM = zuM
  Table           : 1 X zuM = zuM
  Miscellaneous   : zuM
  Total           : zuM
  </code></pre>
  
  <p>On Linux, the original program compiles (without Mingw) with a warning. On Windows, under Mingw, it compiles with zero warnings.</p>
  
  <p>There is anything I should be aware about?<br>
  Does Mingw offer 100% compatibility or I have to modify the program to work on Win?  </p>
  
  <p>I don't know in which direction to head. Where should I start my attempt of fixing the program?<br>
  Do you think I have better chances with Cygwin?</p>
  
  <hr>
  
  <p>Update:<br>
  Wikipedia mentions this: "the lack of support for C99 has caused porting problems, particularly where printf-style conversion specifiers are concerned".<br>
  Is this the thing in which I bumped my head?</p>
  
  <p>Update:<br>
  My mingw version is:</p>
  
  <pre><code>MINGWBASEDIR=C:\MinGW
  gcc version 4.8.1 (GCC)
  gcc version 4.8.1 (GCC)
  GNU gdb (GDB) 7.6.1
  GNU ld (GNU Binutils) 2.24
  GNU windres (GNU Binutils) 2.24
  GNU dlltool (GNU Binutils) 2.24
  GNU Make 3.82.90
  #define __MINGW32_VERSION           3.20
  #define __W32API_VERSION 3.17
  </code></pre>
  
  <p>(I used this code to get the version:</p>
  
  <pre><code>@echo off
  REM version-of-mingw.bat
  REM credit to Peter Ward work in ReactOS Build Environment RosBE.cmd it gave me a starting point that I edited.
  ::
  :: Display the current version of GCC, ld, make and others.
  ::
  
  REM %CD% works in Windows XP, not sure when it was added to Windows
  REM set MINGWBASEDIR=C:\MinGW
  set MINGWBASEDIR=%CD%
  ECHO MINGWBASEDIR=%MINGWBASEDIR%
  SET PATH=%MINGWBASEDIR%\bin;%SystemRoot%\system32
  if exist %MINGWBASEDIR%\bin\gcc.exe (gcc -v 2&gt;&amp;1 | find "gcc version")
  REM if exist %MINGWBASEDIR%\bin\gcc.exe gcc -print-search-dirs
  if exist %MINGWBASEDIR%\bin\c++.exe (c++ -v 2&gt;&amp;1 | find "gcc version")
  if exist %MINGWBASEDIR%\bin\gcc-sjlj.exe (gcc-sjlj.exe -v 2&gt;&amp;1 | find "gcc version")
  if exist %MINGWBASEDIR%\bin\gcc-dw2.exe (gcc-dw2.exe -v 2&gt;&amp;1 | find "gcc version")
  if exist %MINGWBASEDIR%\bin\gdb.exe (gdb.exe -v | find "GNU gdb")
  if exist %MINGWBASEDIR%\bin\nasm.exe (nasm -v)
  if exist %MINGWBASEDIR%\bin\ld.exe (ld -v)
  if exist %MINGWBASEDIR%\bin\windres.exe (windres --version | find "GNU windres")
  if exist %MINGWBASEDIR%\bin\dlltool.exe (dlltool --version | find "GNU dlltool")
  if exist %MINGWBASEDIR%\bin\pexports.exe (pexports | find "PExports" )
  if exist %MINGWBASEDIR%\bin\mingw32-make.exe (mingw32-make -v | find "GNU Make")
  if exist %MINGWBASEDIR%\bin\make.exe (ECHO It is not recommended to have make.exe in mingw/bin)
  REM ECHO "The minGW runtime version is the same as __MINGW32_VERSION"
  if exist "%MINGWBASEDIR%\include\_mingw.h" (type "%MINGWBASEDIR%\include\_mingw.h" | find "__MINGW32_VERSION" | find "#define")
  if exist "%MINGWBASEDIR%\include\w32api.h" (type "%MINGWBASEDIR%\include\w32api.h" | find "__W32API_VERSION")
  
  :_end
  PAUSE
  </code></pre>
  
  <p>)</p>