Some developers have been trapped by assuming that _W64 indicates a
Windows 64 bits target. But it is defined for 32 bits too:

#include <math.h>
#ifdef _W64
int w64 = 0;
#endif
#ifdef _WIN64
int win64 = 0;
#endif


The prepocessed output ends with

int w64 = 0;


This is with

$ gcc -v
Using built-in specs.
COLLECT_GCC=C:\apps\msys64\mingw32\bin\gcc.exe
COLLECT_LTO_WRAPPER=C:/apps/msys64/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/lto-wrapper.exe
Target: i686-w64-mingw32
Configured with: ../gcc-4.9.1/configure --prefix=/mingw32 
--with-local-prefix=/mingw32/local --build=i686-w64-mingw32 
--host=i686-w64-mingw32 --target=i686-w64-mingw32 
--with-native-system-header-dir=/mingw32/i686-w64-mingw32/include 
--libexecdir=/mingw32/lib --with-gxx-include-dir=/mingw32/include/c++/4.9.1 
--enable-bootstrap --with-arch=i686 --with-tune=generic 
--enable-languages=c,lto,c++,objc,obj-c++,fortran,ada --enable-shared 
--enable-static --enable-libatomic --enable-threads=posix --enable-graphite 
--enable-fully-dynamic-string --enable-libstdcxx-time=yes 
--disable-libstdcxx-pch --disable-libstdcxx-debug --enable-cloog-backend=isl 
--enable-version-specific-runtime-libs --disable-cloog-version-check 
--disable-isl-version-check --enable-lto --enable-libgomp --disable-multilib 
--enable-checking=release --disable-rpath --disable-win32-registry 
--disable-nls --disable-werror --disable-symvers --with-libiconv 
--with-system-zlib --with-gmp=/mingw32 --with-mpfr=/mingw32 --with-mpc=/m
 ingw32 --with-isl=/mingw32 --with-cloog=/mingw32 --with-pkgversion='Rev6, 
Built by MSYS2 project' --with-bugurl=http://sourceforge.net/projects/msys2 
--with-gnu-as --with-gnu-ld --disable-sjlj-exceptions --with-dwarf2
Thread model: posix
gcc version 4.9.1 (Rev6, Built by MSYS2 project)


The same experiment but with the 64 bits compiler shows that both _W64
and _WIN64 are defined.

What's the rationale of this?

Can we assume that _WIN64 is the correct way of detecting that the
MinGW-w64 compiler targets Windows 64? Is the _W64 thing a bug on
MinGW-w64?


------------------------------------------------------------------------------
Meet PCI DSS 3.0 Compliance Requirements with EventLog Analyzer
Achieve PCI DSS 3.0 Compliant Status with Out-of-the-box PCI DSS Reports
Are you Audit-Ready for PCI DSS 3.0 Compliance? Download White paper
Comply to PCI DSS 3.0 Requirement 10 and 11.5 with EventLog Analyzer
http://p.sf.net/sfu/Zoho
_______________________________________________
Mingw-w64-public mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to