This is probably a question more appropriate for the Ruby developers, but I
thought I'd throw it out here. I just lost a few fragments of time trying to
figure out why my Ruby extension code, which was trying to call a class
member function "select()" was failing to compile. In fact the compiler
complained that the C++ class didn't have a member function named
"myselect". I finally tracked it down to some code in the Ruby header file
win32/win32.h, which I suppose is included indirectly when you include
"ruby.h" on Win32 platforms.

I see what's going on; it looks like there's a replacement for the standard
Win32 select() named myselect() that I suppose works more like Unix
select(), or some other attempt at portability. Fair enough, but then you're
using a #define to redefine the string "select" and replace it with the
string "myselect". That is somewhat troubling, although I've hacked a
workaround, #undef'ing "select" after I include "ruby.h" anywhere.

Has anyone else been bitten by this when compiling with Visual C++ on
Windows? Any movement underway to perhaps find an alternate solution (i.e.
not redefining the string "select" like this)?