Во-первых, некоторые заблуждения:
MinGW (.org) не предоставляет 64-битную версию своего времени выполнения.MinGW-w64 делает, в дополнение к их 32-битной CRT.Они также работают над поддержкой ARM.И поддерживают различные дополнительные API (Win32 и другие).
Cygwin <-> MinGW-w64: Cygwin не использует MS CRT (msvcrt.dll).Вместо этого он вставляет слой совместимости POSIX между вашим приложением Cygwin и системными библиотеками ОС (kernel32.dll, ntdll.dll и т. Д.), А именно cygwin1.dll.
К вопросу тогда ...
Я нашел компиляторы MinGW-w64 очень хорошими, и GCC 4.6 и выше (фактически 4.5.1 и выше) очень способны производить хороший 64-битный код для Windows.Пожалуйста, помните, что MinGW предоставляет по существу тот же C API, что и msvcrt.dll, поэтому перейдите на msdn.com для документации (и обязательно посмотрите версию документации "MSVC ++ 2003", некоторые функции отличаются от более новых сред выполнения), недумаю, что, поскольку это GCC, документация glibc неожиданно применима к Windows.Ваш код должен быть кроссплатформенным.Также обратите внимание, что sizeof(long)!=sizeof(T*)
на x64 Windows.Часто встречающаяся ошибка при переносе кода * nix или x86 Windows на x64 Windows.