On 6/25/05, james / jamesjrg.com <james / jamesjrg.com> wrote:
> Quoting Austin Ziegler <halostatue / gmail.com> :
> > On 6/25/05, james / jamesjrg.com <james / jamesjrg.com> wrote:
>>> win32.h defines a load of macros. This means any C or C++
>>> program which embeds ruby cannot have variables, functions or
>>> member functions with the same name as these macros. So you
>>> cannot have functions or variables with such common names as
>>> "accept", "bind", "connect", "send", "shutdown" etc. Is it not
>>> possible to implement the Windows version of the Ruby header
>>> files without macros?
>> These names would need to exist in the global namespace in any
>> case (at least accept(), bind(), connect(), and send()) because
>> they're used for network communications.
> But MyClass::connect does not conflict with ::connect

I'll grant that, but note that Ruby is a C application and as such,
there's only the one global namespace (effectively), and ::connect
is an invalid syntactic in C. I'm not saying the problem couldn't be
fixed, but suggesting why it might be a lower priority. For C
programs, these macros aren't problematic (sorry, but they aren't --
they're reality). For C++ programs, they probably are, but you might
be better suited to using Ruby as a DLL. I don't know, honestly,
what would be involved in doing that, but that would probably be a
better way to handle this.

And, to be honest, there are bigger problems with the Windows
version of Ruby than these names; the fact that there's no support
for Unicode filesystem operations in Ruby is a far bigger problem to
me than embedding issues.

-austin
-- 
Austin Ziegler * halostatue / gmail.com
               * Alternate: austin / halostatue.ca