[net.lang.c++] C++ preprocessor wanted

ix181@sdcc6.ucsd.EDU (John Ogawa) (10/04/86)

>>>>>>>>>>>> Eat away you monster!!! <<<<<<<<<<<

I am an avid C++ fan who is about to get an Atari 1040ST and a C
package. My question is: is there any way to get a C++ package for
the 1040? Alternately, is there any C source code for CC that I can
get my hands on? 

Thanks in advance.

		John Ogawa
		UC San Diego

dclemans@mntgfx.UUCP (Dave Clemans) (10/07/86)

Oasys Systems has been advertising commercial support for C++ in a variety
of systems; in particular using Lattice C on the IBM PC.

It would be relatively simple bring up C++ under Lattice C for the ST;
Oasys just has to be convinced that it is worth the effort to do so.

None of the other ST C compilers (especially Alcyon C which comes with the
developers kit) would be usable back-ends for C++; the backend compiler
the AT&T released C++ frontend REALLY!!! needs at least 32 significant
characters in names.  To my knowledge, Lattice C (using the GST linker)
is the only ST C compiler that can support 32 significant characters in names.

dgc

brinsmead@calgary.UUCP (Mark Brinsmead) (10/07/86)

In article <2939@sdcc6.ucsd.EDU>, ix181@sdcc6.ucsd.EDU (John Ogawa) writes:
> I am an avid C++ fan who is about to get an Atari 1040ST and a C
> package. My question is: is there any way to get a C++ package for
> the 1040? Alternately, is there any C source code for CC that I can
> get my hands on? 

   I am afraid this is unlikely. All C++ compilers I am aware of
(i.e. AT&T's) are actually fancy preprocessors that spit out rather
wild looking C. If CC is to work on an atari, your ATARI C compiler
must (and i mean MUST) be able to cope with *ARBITRARILY* long 
identifiers.

   I am not aware of any C compiler for the atari ST that will suffice,
(my own Lattice C compiler nmormally uses only the first 8 characters,
and will in any event, use at most 32 characters of an identifier. 
This is probably not enough for C++. )

                              M. Brinsmead @ Univewrsity of Calgary.

lbl@druhi.UUCP (LocklearLB) (10/09/86)

In article <429@vaxb.calgary.UUCP>, brinsmead@calgary.UUCP (Mark Brinsmead) writes:
> In article <2939@sdcc6.ucsd.EDU>, ix181@sdcc6.ucsd.EDU (John Ogawa) writes:
> > I am an avid C++ fan who is about to get an Atari 1040ST and a C
> > package. My question is: is there any way to get a C++ package for
> > the 1040? Alternately, is there any C source code for CC that I can
> > get my hands on? 
> 
>    I am afraid this is unlikely. All C++ compilers I am aware of
> (i.e. AT&T's) are actually fancy preprocessors that spit out rather
> wild looking C. If CC is to work on an atari, your ATARI C compiler
> must (and i mean MUST) be able to cope with *ARBITRARILY* long 
> identifiers.
> 
>    I am not aware of any C compiler for the atari ST that will suffice,
> (my own Lattice C compiler nmormally uses only the first 8 characters,
> and will in any event, use at most 32 characters of an identifier. 
> This is probably not enough for C++. )
> 
>                               M. Brinsmead @ Univewrsity of Calgary.

If your compiler is capable of handling 32 character variable names, you should 
normally not have any problems with using C++.  There may be isolated cases
where problems would occur, but the names that the C++ compiler generates are
usually unique in the first 32 characters.  Of course, it would be nice if one
of the C vendors for the ST would provide a true flexname capability.  It really 
isn't very difficult to do!

Barry Locklear
AT&T Information Systems Labs
Denver, CO 80234
(303) 538-4954
ihnp4!drutx!druhi!lbl

braner@batcomputer.TN.CORNELL.EDU (braner) (10/10/86)

Regarding the need for a C compiler that would handle long
identifiers, y'all might not know that Megamax recognizes
the first 10 chars, and allows very long total length.
That may still not be enough for C++ - I dunno.
(and you still need to get that C++ preprocessor...)

BTW: I devised a method to do object-oriented programming in C.
Not fancy but simple, and you get inheritance and even late binding
of sorts with high efficiency (about 100 microSecs for a typical
invocation of a method).  If anybody is interested let me know.

- Moshe Braner

cgoudeseune@watnot.UUCP (center of gravity) (10/14/86)

I hear all these complaints that most C's only support 8-character
identifiers, and the C++ preprocessor *needs* thirty-two.

Say we use only 7-character letters-only identifiers.
26^7 = 8 031 810 176.
Seeing as how any C++ preprocessor is unlikely to produce over 8 billion
different identifiers, is there a good reason why a little filter couldn't
be inserted between C++'s output and C's input to shrink the size of these
huge identifiers to a manageable size.
Sure, it's slow; we've got a 8 MHz 68000.  Sure, it's a kludge; it works!
(I hope)

Camille

mvh@cbnap.UUCP (M.L. Vonder Haar x4126 3E257) (10/14/86)

In article <12069@watnot.UUCP> cgoudeseune@watnot.UUCP (center of gravity) writes:
>I hear all these complaints that most C's only support 8-character
>identifiers, and the C++ preprocessor *needs* thirty-two.
>
>Say we use only 7-character letters-only identifiers.
>26^7 = 8 031 810 176.
>Seeing as how any C++ preprocessor is unlikely to produce over 8 billion
>different identifiers, is there a good reason why a little filter couldn't
>be inserted between C++'s output and C's input to shrink the size of these
>huge identifiers to a manageable size.
>Sure, it's slow; we've got a 8 MHz 68000.  Sure, it's a kludge; it works!
>(I hope)
>
	I just hope you never have a bug.  Sdb is only fair as a debugger
	for C++.  But if you generated names that could not be easily
	transformed by programmers to what they wrote in C++ sdb would be
	just about useless.
	The way I see it you'll need to write your own debugger at the
	same time.

Mark L Vonder Haar
{ihnp4|cbosgd}!cbnap!mvh

brinsmead@calgary.UUCP (Mark Brinsmead) (10/15/86)

In article <1117@druhi.UUCP>, lbl@druhi.UUCP (LocklearLB) writes:
> 
> If your compiler is capable of handling 32 character variable names, you should 
> normally not have any problems with using C++.  There may be isolated cases
> where problems would occur, but the names that the C++ compiler generates are
> usually unique in the first 32 characters.  Of course, it would be nice if one
> of the C vendors for the ST would provide a true flexname capability.  It really 
> isn't very difficult to do!
> 

    Oops, I guess I stand corrected. Of course, I've always believed
that if something dosen't work for certain isolated cases, it simply 
dosent work, however, I suppose that if it means we *CAN* have C++ on
an ST, this is something we could learn to live with. (Provided, of
course, that you don't mind not being able to count on a given (correct)
program compiling.)  Where do I order my Cfront?

braner@batcomputer.TN.CORNELL.EDU (braner) (10/16/86)

[]

Filtering long identifiers into short (but not mnemonic) forms would
work, I guess.  But since we also have a Megabyte, it is not reasonable
to limit identifiers to anything less than 255 chars!  Come on, compiler
makers: it's 1986!

- Moshe Braner

desj@brahms@ndmce.uucp (David desJardins) (10/17/86)

In article <173@cbnap.UUCP> mvh@cbnap.UUCP (M.L. Vonder Haar x4126 3E257) writes:
>	I just hope you never have a bug.  Sdb is only fair as a debugger
>	for C++.  But if you generated names that could not be easily
>	transformed by programmers to what they wrote in C++ sdb would be
>	just about useless.
>	The way I see it you'll need to write your own debugger at the
>	same time.

   If it were important enough you could keep a table of the correspondences
between symbol names and then write a postprocessor to rewrite the correct
symbolic names into the a.out file; this shouldn't be more than a day's work.

   -- David desJardins

phr@ernie.Berkeley.EDU (Paul Rubin) (10/18/86)

In article <1222@batcomputer.TN.CORNELL.EDU> braner@batcomputer.UUCP (braner) writes:
>[]
>
>Filtering long identifiers into short (but not mnemonic) forms would
>work, I guess.  But since we also have a Megabyte, it is not reasonable
>to limit identifiers to anything less than 255 chars!  Come on, compiler
>makers: it's 1986!

If anyone is interested, note that the past few GNU Emacs distributions have
included a simple program that reads C source code and produces a file of
#define statements to map long identifiers into short ones.  It also
includes a replacement C Preprocesor (cpp) in case the one you are
currently using doesn't handle arbitrarily long identifiers.