windows.h breaks ObjC ?
MarketLogix
mlx@mlx.com
Sun Nov 28 18:26:00 GMT 1999
Begin forwarded message:
X-Sender: lhall@pop.ma.ultranet.com
X-Mailer: QUALCOMM Windows Eudora Pro Version 3.0.5 (32)
Date: Sun, 28 Nov 1999 18:30:22 -0500
To: mlx@san.rr.com
From: "Larry Hall (RFK Partners, Inc)" <lhall@rfk.com>
Subject: Re: windows.h breaks ObjC ?
Cc: "cygwin@sourceware.cygnus.com" <cygwin@hotpop.com>
In-Reply-To: < 9911281643.AA07798@mlx.com >
At 08:43 AM 11/28/99 -0800, you wrote:
>Hi all,
>
>Just installed v1.0 and spent the whole weekend pulling my hair out.
>
>Oh, the general product looks pretty nice but I'm afraid that the new
>windows headers somehow break ObjC preprocessing. I know that Cygnus
>has never supported ObjC so, as usual, I didn't expect much.
>
>But it seems as though we may have hit a new low here.
>
>Either that or I'm just too bleary-eyed to see something obvious.
>
>Take this source code example, lets call it -> test.c
>
>#include <windows.h>
>#include <objc/Object.h>
>int main ( int argc, char *argv[] (
>{
> printf("hello world\n");
> return 0;
>}
>
>now try to compile it to object via:
>
>gcc -c -x objective-c test.c -o test.o
>
>I get the foillowing:
>
>Object.h:37: invalid identifier `@struct'
>Object.h:37: parse error before `Object'
>Object.h:38: syntax error before `{'
>Object.h:43: method definition not in class context
>
>This is, of course, the first occurence of an
>
>@interface directive
>
>Now, comment out
>//#include <windows.h>
>
>it compiles without a hitch.
>
>I built gcc-2.95.2 from gnu AND download pre-built from
>Mumit Khan's site ALL with the same result.
>
>Gotta roll back to b20.1 ?
>
>What gives ?
>
>------------
>
>Well, I didn't send this mail right away and decided to research
>a bit more. Here's what I found:
>
>basetyps.h, line #20: #define interface struct
>
>Oh, just brilliant - concocted by some C++ 'er no doubt !!!
>C'mon, please tell me you're not already married to this.
>
>Steve B.
>
I think you'll find this is a MSism for COM. I'm sure you can work
around
this if necessary but if not, perhaps you want to take it up with MS...
Larry Hall lhall@rfk.com
RFK Partners, Inc. http://www.rfk.com
118 Washington Street (508) 893-9779 - RFK Office
Holliston, MA 01746 (508) 893-9889 - FAX
(508) 560-1285 - cell phone
Hmmmm ...
You're the second individual to blame M$ here.
I'm no big fan of those guys either. But I think
this line of reasoning is flawed enough to take the
time to slooooowly and cleeeeearly state what I
believe to be the real underlying problem.
1. I understand that M$ has its need of the "interface" label.
2. This is NOT the problem.
3. "interface" is distinct from "@interface".
4. No problem with the global name space yet.
Right ?
5. Now all of a sudden in the new Cygnus windows api headers
we get this bad boy:
#define interface struct
Sure, and while we're at it why not:
#define constructor tulips
and
#define class urass
What the heck nobody really codes in ObjC anymore anyway right ?
Ah, they didn't create #undef for nothing ... RIGHT ?
Yea sure, I can unhack this hack but I would hope folks could
think a bit deeper and see this "little inconvenience" for what
it really is.
The first baby steps toward breaking Objective-C compatibility
within Cygwin sources.
Steve B.
--
Want to unsubscribe from this list?
Send a message to cygwin-unsubscribe@sourceware.cygnus.com
More information about the Cygwin
mailing list