windows.h breaks ObjC ?

Helge Hess
Tue Nov 30 23:39:00 GMT 1999

MarketLogix wrote:
> 1. I understand that M$ has its need of the "interface" label.
> 2. This is NOT the problem.
> 3. "interface" is distinct from "@interface".

Maybe this is the misconception, these two are *not* distinct from the
preprocessor's point of view.

> 4. No problem with the global name space yet.
> Right ?

I don't think so.

> 5. Now all of a sudden in the new Cygnus windows api headers
>    we get this bad boy:
> #define interface struct

As you already found out yourself, this is no real problem as this can
be undefined/redefined.

> What the heck nobody really codes in ObjC anymore anyway right ?

No. This is an API compability problem found with a lot of other
libraries as well and this problem is rooted in C's concept of defines.

> Ah, they didn't create #undef for nothing ... RIGHT ?


> The first baby steps toward breaking Objective-C compatibility
> within Cygwin sources.

I think you are overreacting, you can't really 'break' Objective-C
compatibility since it is complete ANSI-C and you would have exactly the
same problems when using plain ANSI-C (with some other lib). You can
easily 'unbreak' this using a small header file.

Actually windows.h of cygwin tries to emulate the M$ stuff and therefore
needs to provide these macros. If the people are kind they can provide
appropriate wrapper headers (eg objc/windows.h or #ifdef OBJC), but
personally I don't think this is really necessary.


Want to unsubscribe from this list?
Send a message to

More information about the Cygwin mailing list