Sorry, some details are missing and not accurate.
The correct situation is :
The lack of WIN32 causes bad result (compilation error) of conftest for
some type of win32 extension libraries depending structure's complicacy.
The problem is:
- define 'have_header('..') in extconf.rb, and the header file uses
some kludge for push/pop for struct padding. (for example: http.h)
- mkmf.rb creates conftest.c for the header with some usual ruby's (cf,
win32.h).
- but no other user specific macro or header are supplied, so at this
point conftest.c has neither _WIN64 nor WIN32.
- start to compile contest.c by mkmf.rb
- win32.h includes winsock2.h and it requires WIN32 or _WIN64 but
there is no chance to supply it. This causes no push/pop for structures's
padding.
- then the targeted header is included and failed by bad padding
(because the last status of padding of winsock2.h)
- so compilation of conftest.c fails.
- building the extension library may fail too.
So, it's very harmful for Win32 ruby extension library programers
without r30989.
--
arton <artonx / yahoo.co.jp>