Path: utzoo!utgpu!attcan!uunet!yale!husc6!bu-cs!madd
From: madd@bu-cs.BU.EDU (Jim Frost)
Newsgroups: comp.sys.ibm.pc
Subject: Re: What about the Turbo C compiler?
Message-ID: <24350@bu-cs.BU.EDU>
Date: 10 Aug 88 01:55:30 GMT
References: <371@gt-eedsp.UUCP> <5930012@hpcupt1.HP.COM>
Reply-To: madd@bu-it.bu.edu (Jim Frost)
Followup-To: comp.sys.ibm.pc
Organization: Boston University Distributed Systems Group
Lines: 45

In article <5930012@hpcupt1.HP.COM> kluft@hpcupt1.HP.COM (Ian Kluft) writes:
|cck@deneb.ucdavis.edu (Earl H. Kinmonth) writes:
|> TurboC (1.0) has many bugs, some in fundamental areas. You say you want
|> floating point arithmetic that works? What are you, some kind of
|> communist?
|
|I've heard that TC 1.0 was that bad.  I bought a copy of 1.5 shortly
|after it became available.

I have it and it does goof up floats and some other things.
Interestingly, 1.0 was bug-free enough for someone to port MINIX to,
with good results.  If you're not using floats, it works pretty well.
I have used 1.0 for a number of utilities and have had no problems.
1.5 has all of the bugs that I was aware of fixed (and there are
patches to 1.0 that fix several bugs) along with major library
enhancements.  Haven't gotten around to buying it yet, though.

I think the original poster needed port I/O commands.  Turbo C has
them; not only that, but it has #defines in the appropriate headers
that allow MSC programs to compile even though the port I/O commands
are not the same between the two C's.  Thoughtful of them.

|I like one feature of TC in particular - interrupt functions.

You didn't mention inline code.  It allows both TPascal-style inline
machine code and MASM code (although you need MASM for that).  I've
found that useful when writing interrupt subroutines that get called
by FAR calls (why in ^#$%$ the people that wrote NTNX did that is
beyond me).  You just inline the interrupt function return
instructions and replace the IRET with a RETF.

Turbo C has ANSI-draft prototyping which i've found very useful in
debugging others' code.  I keep wishing the compiler on my Sun had
that.  The MINIX to Turbo C people found several bugs in the MINIX
code when they converted over to using prototypes.  Of course you
don't need to use prototyping but it can be wonderful.

Aside from the float problem, 1.0 was pretty good.  1.5, with its bug
fixes and awesome libraries, is definitely worth the money.  There are
better compilers out there, but this is a good one.  Its only lacking
is a debugger.  But we all debug with printk() statements (for lack of
a kernel debugger), don't we ;-).

jim frost
madd@bu-it.bu.edu