Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!brl-adm!caip!ut-sally!pyramid!voder!kontron!cramer From: cramer@kontron.UUCP (Clayton Cramer) Newsgroups: net.micro.pc,net.lang.c Subject: Re: Survey of C Compilers Message-ID: <932@kontron.UUCP> Date: Mon, 21-Jul-86 13:08:53 EDT Article-I.D.: kontron.932 Posted: Mon Jul 21 13:08:53 1986 Date-Received: Tue, 22-Jul-86 01:13:45 EDT References: <7975@duke.duke.UUCP> <613@looking.UUCP> Organization: Kontron Electronics, Mt. View, CA Lines: 55 Xref: mnetor net.micro.pc:5830 net.lang.c:5389 I'm not really disagreeing with Brad, but I do have a few comments about our experiences here at Kontron with the Microsoft C compiler. > > I have used several C compilers in my projects and here are the summaries: > > 1) Microsoft C > The winner: > - It comes from a large firm dedicated to languages > - The only compiler to take my 30,000 line program and have > it run essentially right away. Early on in our project, we move 12,000 lines of source from Berkeley 4.2 UNIX on a VAX to Microsoft C under PC-DOS. It only took six hours to find all the differences between PC-DOS & UNIX, and to find incompatible chunks of C. (The incompatibilities were just about all our fault.) > - Support has been reasonable for me, but I'm a beta tester. Support has been poor to useless for us. The questions we ask usually get pretty useless answers, because they are usually telling us to do things that the manuals warned about. > - Ansi C style argument type checking. Nice feature, but incompatible with the Berkeley 4.2 C compiler. (I use this feature at home a lot, though.) > Brad Templeton, Looking Glass Software Ltd. - Waterloo, Ontario 519/884-7473 Additionally, we have run into a few maddening bugs: 1. A parameter is declared as a register pointer to a structure -- it generated spurious code. (No, I don't consider register declarations for a 8086 family machine sensible -- the declaration exists for historical reasons.) 2. If you scanf a floating point variable, the linker will not grab the 8087 emulator unless you have AT LEAST one floating point arithmetic operation in the program. This is documented (sort of), but I'm a little disappointed that the compiler doesn't generate the right floating point emulator library references because of the float declarations without an float operation. 3. Under some ill-defined conditions, the following parameter declarations are not equivalent: char *String; char String[]; Overall, I'm very pleased with the Microsoft C V3.0 compiler. The number and type of bugs are completely acceptable for a compiler. Clayton E. Cramer