Hi,

In fact I build WIN64 with the set, and I believe that only preferable
behaviour of have_header() is just checking the header is there or not.
The building detail is matter of Makefile of the extension library and
 developers can set the macro their c source file or -D for namke as
they like (but mkmf.rb can't do that).
This means 
 - in windows, the header file is common for both win32 and win64.
 - we expect conftest (have_header) only existing check. It must not
fail if the file is exist. So defining WIN32 (more common than _WIN64)
is preferable.
 - including windows.h is meaningless because it can't help to determine WIN32
or _WIN64 .

Or more work is need but another solution is set WIN32 or _WIN64 by
mkmf.rb for compiling conftest.c, but I think if one want to build x64
version with win32 ruby or vice versa, it can't help but obstruct it.

-- 
arton <artonx / yahoo.co.jp>