[comp.sys.apple] ORCA/C

dougm@pnet51.cts.com (Doug Mcintyre) (03/24/89)

Oh by the way APW C does support large Arrays just fine. Just be careful when
allocating anything over 64k, use lmalloc, not a couple calls to malloc..

Anyway, I don't really know what all ANSI C requires of its librarys but Mike
said that he left out a few things that were for multitasking, that wouldn't
do anything on the IIGS..

Orca/C is going to try to be 100% compatible with APW C and be about 99% ANSI
C. As of right now I think that the only thing Mike had to change is that ANSI
C uses \p for a pointer type in printf, and APW C uses \p in strings to
represent pascal strings, so he went the APW C way.

I don't quite understand about adding keywords. Pascal is a pretty valid
keyword (I believe it is also used in the IBM compilers with another
meaning..) so from the above paragraph Orca/C will still have the APW C
meaning of pascal..

All other special compiler stuff is handled with the #pragma processor
directive which ansi c fully supports. All cda, nda support is through #pragma
as well as memory model stuff. The default is the APW C style memory model.
Also there are some nice things used by #pragma to make programming easier.


95% of the people who use APW C is going to use Orca/C. It is much nicer. APW
C in my opinion is never going to get its bugs fixed. My most anoying one is
that  sometimes it can't do preprocessor directives correctly.. What is the
difference between #if and #ifdef if the symbol defined as 1 or 0? APW C seems
to think there is a difference sometimes and wont compile #if SYMBOL, but does
just fine with #ifdef SYMBOL. I don't know of any bugs in the compiler per se,
but the preprocessor and the library could stand vast improvements..

UUCP: {rosevax, crash}!orbit!pnet51!dougm                Compuserve: 70611,2215
ARPA: crash!orbit!pnet51!dougm@nosc.mil                        ALPE: DougMac
INET: dougm@pnet51.cts.com

lwv@n8emr.UUCP (Larry W. Virden) (03/24/89)

Actually, the p difference you are thinking about is that in the *printf
family, %p means print out a pointer value in ANSI and means print out a
pascal type string in APW C.  I talked to Mike about this on ALPE and he
didnt seem like he was TOO set in his ways here - if there was enough
demand for this one he might figure out some way to permit both via some sort
of option...

-- 
Larry W. Virden	 674 Falls Place, Reynoldsburg, OH 43068 (614) 864-8817
75046,606 (CIS) ; LVirden (ALPE) ; osu-cis!n8emr!lwv (UUCP) 
osu-cis!n8emr!lwv@TUT.CIS.OHIO-STATE.EDU (INTERNET)
The world's not inherited from our parents, but borrowed from our children.

gwyn@smoke.BRL.MIL (Doug Gwyn ) (03/24/89)

In article <806@orbit.UUCP> dougm@pnet51.cts.com (Doug Mcintyre) writes:
>ANSI C uses \p for a pointer type in printf, and APW C uses \p in strings to
>represent pascal strings, so he went the APW C way.

I think what you mean is that APW C *printf() functions use the %p format
specifier for Pascal-style character strings (as opposed to native C null-
byte terminated char arrays).  ANSI C *printf() formats use %p for output
of a void* (canonicalized object pointer) in an "implementation-defined"
format that must be reversible (via *scanf() with %p) but otherwise is up
to the C implementor to specify.  I see little use other than in debugging
for ANSI C %p, so this particular deviation doesn't worry me too much, but
it does require that __STDC__ not be defined as 1, and that DOES worry me,
since that's generally how K&R1 vs. ANSI flavors of code are conditionally
selected for compilation.

How common ARE Pascal-style strings in APW C *printf() invocations?  If as
I suspect they are exceedingly rare, then it makes no sense to lose ANSI C
standard conformance for this one point.  A change to %P would be a trivial
way to continue to provide support for Pascal-style strings.  It even fits
better the convention of using upper-case flags for local inventions and
leaving the lower-case ones for expansion of standard things.  (As in UNIX
command-line option arguments.)

One exceedingly simple way to have this both ways is for the printf()
internal implementation to be testing not for 'p' or 'P' but rather for
whatever is stored in a global variable, preinitialized whatever way
ByteWorks prefers.  Then the run-time startoff code can be tweaked to
substitute the other character constant if the other interpretation is
desired.

>I don't quite understand about adding keywords. Pascal is a pretty valid
>keyword (I believe it is also used in the IBM compilers with another
>meaning..) so from the above paragraph Orca/C will still have the APW C
>meaning of pascal..

"pascal" is not allowed to be usurped for use as a keyword by an ANSI C
conforming implementation.  One of the major purposes of the standard is
to squelch exactly this sort of runaway invention of reserved names that
can be used by the application in some environments but will cause the
application to break miserably when ported into another (APW C, for
example).  Standard-conforming C implementations ARE allowed to reserve
names for their own use, but they must start with an underscore (the
exact rule depends on which name space is involved).  Applications ported
from other environments will be unaffected by the "special" meaning that
names such as "__pascal" suddenly acquire in the APW C environment,
because they will avoid using such names; there is no way, on the other
hand, that a C programmer could have anticipated that some implementation
would have assigned a special meaning to "pascal", which is a fairly
likely name for some program variable.

>What is the difference between #if and #ifdef if the symbol defined as 1
>or 0? APW C seems to think there is a difference sometimes and wont
>compile #if SYMBOL, but does just fine with #ifdef SYMBOL.

Well, maybe it's doing the right thing.  #if SYMBOL takes the true branch
if SYMBOL is defined as 1 but not if it is defined as 0 or if it is
undefined.  #ifdef SYMBOL takes the true branch for either 1 or 0 but not
if SYMBOL is undefined.  Thus there is a difference.

shawn@pnet51.cts.com (Shawn Stanley) (06/03/89)

I just got notification in the mail that ORCA/C is available... Byte Works is
apparently shipping in a couple weeks.  It's supposed to compile to smaller
and faster executables than APW C does.  The listed cost is $150.

I'm looking forward to getting this... it'll be nice to have a good C compiler
finally!

UUCP: {uunet!rosevax, amdahl!bungia, chinet, killer}!orbit!pnet51!shawn
INET: shawn@pnet51.cts.com

bird@ihlpf.ATT.COM (Walters) (06/04/89)

From article <766@orbit.UUCP>, by shawn@pnet51.cts.com (Shawn Stanley):
> I just got notification in the mail that ORCA/C is
> available... Byte Works is apparently shipping in a couple
> weeks. It's supposed to compile to smaller 
> and faster executables than APW C does.  The listed cost is $150.
> 

Keep in mind that Programs Plus sells it for approx $150/2
-- 
				Joe Walters att!ihlpf!bird   
				IHP 1F-240 (312) 713-5356

STEIN@UCONNVM.BITNET (Alan Stein) (08/06/89)

  I'm having problems with either the p2cstr or strcpy functions in
Orca/C.  After getting back a Pascal type string stored in char pst[20],
I've tried transferring it to a C type string, to be stored in
char cst[20], with the code

  strcpy(cst,p2cstr(pst));

but the program hangs.  Has anyone else had this problem?


Alan H. Stein              | stein@uconnvm.bitnet
Department of Mathematics  | stein%uconnvm.bitnet@mitvma.mit.edu
University of Connecticut  | ...psuvax1!UCONNVM.BITNET!STEIN
32 Hillside Avenue         |
Waterbury, CT 06710        | Compu$erve  71545,1500
(203) 757-1231             | GEnie       ah.stein

dhom@cosmos.acs.calpoly.edu (David Hom) (08/21/89)

I just purchased ORCA/C installed it on my hard disk and started to
get acquainted with the desktop environment (I previously owned ORCA/M).
Everything ran fine. I compiled bullseye.cc.  When running the debugger
step and trace ran fine.  When I set auto-go, the green dots appeared,
but when stepping through the code, it still stepped line by line through
the area I set for auto-go.  Then I tried to set a breakpoint.  The purple
"X" appeared, but when tracing through the code, the run did not stop at
the breakpoint.

I tried this several times then tried it on the original disks shipped to
me with the same results--markers came up correctly, but the functions
did not work.

Has anyone else had this problem with ORCA/C?  Any help would be greatly
appreciated.


David

dhom@cosmos.acs.calpoly.edu

dhom@cosmos.acs.calpoly.edu (David Hom) (08/22/89)

In article <13704@polyslo.CalPoly.EDU> I write:

>step and trace ran fine.  When I set auto-go, the green dots appeared,
>but when stepping through the code, it still stepped line by line through
>the area I set for auto-go.  Then I tried to set a breakpoint.  The purple
>"X" appeared, but when tracing through the code, the run did not stop at
>the breakpoint.
>

I got a couple email responses to this posting voicing the same problem.  I
call Byteworks today.  They know about the problem and will be releasing a
free update to registered owners of Orca/C (so send in your registration cards.)


David

dhom@cosmos.acs.calpoly.edu

bird@cbnewsd.ATT.COM (j.l.walters) (08/22/89)

From article <13704@polyslo.CalPoly.EDU>, by dhom@cosmos.acs.calpoly.edu (David Hom):
> Has anyone else had this problem with ORCA/C?  Any help would be greatly
> appreciated.
> 

I have and so has everyone else. The debugger has got bugs that
are supposed to be fixed sometime around 9/1/89. If you are a
registered owner they will send you upgraded disks free.


-- 
				Joe Walters att!ihlpf!bird   
				IHP 1F-240 (312) 713-5356