This is the mail archive of the cygwin@sourceware.cygnus.com mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: windows.h breaks ObjC ?




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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]