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)?