Path: utzoo!utgpu!watmath!clyde!att!osu-cis!tut.cis.ohio-state.edu!rutgers!ucsd!sdcsvax!ucsdhub!hp-sdd!hplabs!hp-pcd!hplsla!jima
From: jima@hplsla.HP.COM (Jim Adcock)
Newsgroups: comp.lang.c++
Subject: Re: goodbye cpp ??? (macros vs. inline functions)
Message-ID: <6590076@hplsla.HP.COM>
Date: 5 Dec 88 18:43:41 GMT
References: <3637@pt.cs.cmu.edu>
Organization: HP Lake Stevens, WA
Lines: 62
> < /* code for UNIX systems only */
> < /* code for MSDOS systems only */
>
> You're right, and most compilers do this. But you miss the point. Not all
> porting problems can be solved this simply. As a trivial example:
>
> #if COMPILER_A
> typedef long double abc;
> #elif COMPILER_B
> typedef double abc;
> #else
> }}}} /* cause a syntax error */
> #endif
>
> Basically, there's a lot more differences between compilers than can
> be handled with an if(0)...else... construct.
Maybe, but let me ask a devil's advocate type question:
WHY NOT allow conditional compilation of typedefs? What would it take
to allow the language to do this?
[suffice to say, I'm assuming that the conditional expressions must
eval to compile time constants.]
If the cpp "hack" above is necessary to write portable programs,
as indeed it seems to be, then why not admit this is a capability
required in everyday programming practice -- and make it part of
the language?
I do not doubt there is always going to be weird stuff that is best
handled by cpp, or some more qualified preprocessor, but shouldn't
"everyday" programming needs be built into a language? As opposed
to forcing you to "fake" a capability by using a preprocessor?
Wouldn't, for instance:
class intObject
{
int anInt;
if (TEST | DEBUG)
{
char * name;
...
}
...
}
-- wouldn't this be a reasonable way to be able to specify variables
and functionality that are only needed for testing and debugging a
class, that you don't want to provide in the finalized software?
And if you start hacking cpp to force users of cpp to follow the
syntax of the language -- aren't you really admitting that that
capability would best be built into the language in the first place?