Q: Which PC C/C++ compiler is best and what should I buy? A: This is perhaps the commonest of Frequently Asked Questions (FAQ's), especially by beginning C'er. The honest answer is that there is no "best" compiler and what may be best for you depends to a large degree on what you'll be using it for. The PC C/C++ compiler market is quite brutal and the companies that have survived have done so because some number of people think each of them makes the "best" compiler. With the preceding caveat in mind, following are some summaries of the current crop of C/C++ compilers with some of their strengths and weaknesses. MIX POWER C ----------- Power C is the least expensive PC C compiler on the market. The compiler itself is $20, and an additional $30 will buy their source-level debugger along with the complete library source code with an assembler. So, what's the catch? None, actually. Power C is a quite decent and ANSI-conforming compiler which compiles relatively tight, fast code relatively quickly. It's biggest drawback is its use of a non-standard object file format which obviates object-level compatibility with any other compiler using Microsoft/Intel standard object file formats. Another problem is lack of support from 3rd party library vendors. Although Mix sells a wide range of libraries themselves, it's difficult to convince a vendor to produce a $100 add-on library for a $20 compiler. On the plus side, Power C comes with the best user's manual for students in the business. The beginner's tutorial section has enabled many beginning C programmers to get up to speed without spending another dime on any other textbooks. Should you want more instruction, Mix sells a package including Power C with the library source and debugger along with the book "Master C" for only $60. Power C's primary technical claim to fame is its floating point which challenges the industry leader, Watcom, in many cases. QUICK C (QC) ------------ Microsoft's baby compiler comes in versions for DOS and Windows. Fully compatible with the "big" Microsoft compiler, QC is an excellent tool for the C programmer on a budget. The Windows version is a cheap and relatively painless way to get into the world of Windows programming. The DOS version is one of those rare compilers these days that still runs on minimal systems without requiring fast processors and gobs of memory. QC's big selling point is its compatibility with full-blown Microsoft C. It's biggest drawback at this point is Microsoft's apparent loss of interest in supporting its "Quick" languages. TURBO C++ (TC++) ---------------- TC++ is to Borland's "big" C++ compiler as QC is to Microsoft's "big" C compiler. Targeted at the hobbyist market, the latest version (TC++ 3.0) raised quite a stir when Borland released it requiring at least a 286 processor and 1 Mb of *available* extended memory above the normal 640K DOS limit. Many hobbyists running on older XT's, or machines without the excess memory capacity have therefore failed to upgrade to the new release. If you have the machine to support it, TC++ has the usual Borland attributes of extreme ease-of-use, attractive Integrated Development Environment (IDE), and good supporting tools. MICROSOFT C/C++ (MSC) --------------------- Microsoft's professional compiler is now at version 7.0, requiring at least a 386 processor, 4 Mb of *available* extended memory, and a DPMI server. Microsoft's original intent was that everyone would be working in a Windows environment (Windows 3+ is a DPMI server), but includes Qualitas' 386Max memory manager (another DPMI server) in the package just in case. If you don't have the machine resources or you want to run another memory manager such as QEMM, you can't use MSC. On the plus side, MSC 7 is an excellent C++ compiler and generates executables which may not always be smaller than Borland, but usually execute faster. MSC is still the standard for PC C compilers and it shows in the ready availability of 3rd party libraries supporting it. Compile times with full optimization are still quite sluggish, but using the quick compile option can be provide acceptable results. BORLAND C++ (BC++) ------------------ BC++ carries on Borland's tradition of providing excellent bang for the buck. The latest release (3.1) of their professional compiler is an attractive alternative to shops also considering MSC 7. BC++ isn't as demanding as MSC and only requires a 286 and 2 Mb of *available* extended memory to run. Borland's tools are uniformly excellent, but the compiler still suffers a bit in comparison to the industry's technological leaders, Microsoft, Watcom, and Zortech - although the gap is closing. As with MSC, it's an excellent C++ compiler and enjoys widespread support among 3rd party library vendors. Like all Borland compilers, ease of use was a design priority, all oriented to the excellent IDE. ZORTECH C++ (ZTC++) ------------------- ZTC++ was the industry's first C++ compiler, but has fallen behind in tracking the C++ language spec recently. Bought out by Symantec last year, the current compiler is an excellent C compiler and a good C++ compiler. Zortech's biggest strength is it's cross-platform support with available versions for DOS, OS/2 (1.x currently with 2.0 in beta), Mac, and Unix. While Borland bundles some of the best tools, ZTC++ bundles excellent libraries and add-ons for the compiled code. Examples include a TSR library, swapping spawn functions, 2 royalty-free DOS extenders, and an excellent set of ancillary C and C++ tools libraries. ZTC++ is currently also the only PC compiler which generates true 32-bit code and has a switch for generating 486 code. ZTC++ has always been in the forefront of optimizer technology along with Microsoft and Watcom. An undocumented feature of the version 3 compiler is full IEEE-754 and NCEG (Numerical C Extensions Group (an ANSI working committee trying to make C a suitable replacement for FORTRAN) compatibilty. Negatives include poor support (but getting slowly better) since the Symantec buyout and somewhat primitive supporting tools, especially for Windows development. WATCOM C (WC) ------------- Watcom is the technological leader of the industry, performing feats of optimization and floating point speed other vendors only dream of. The cost is compile speed, which can best be described as glacial. For all its technical excellence, WC is still a niche market compiler like ZTC++. As such, it's 3rd party support is poor, but many have found that MSC libraries will work just fine with WC. Also, like ZTC++, WC supports 32-bit code generation which, unlike ZTC++, is even available for OS/2 2.0 today. WC is the compiler of choice for many OEMs, such as Novell, who want only the best supporting code for their products. TOPSPEED C (TSC) ---------------- TSC has had a rocky life, getting off to a late start in the market and never having really quite caught on. Originally, TSC was a Turbo C clone which shared tools and environments with its sister Modula-2 compiler. More recent versions have extended this by using a modular approach with an environment supporting "plug-in" compilers for various languages which can all be used together. The company was recently acquired by Clarion. TSC's undisputed biggest strength is its smart linker and various features added to facilitate mixed-language programming (Modula-2, for example, supports multi-threaded code). Using this technology, you can count on TSC to almost always produce the smallest executables for a given piece of source code. The library, written almost exclusively in assembly, is also excellent and contributes to the frugal use of run-time memory. Unfortunately, compiler-generated code is typically not of the same quality. Drawbacks include almost non-existant 3rd party support and the pervasive IDE which feels more at home to Modula-2 programmers than C programmers. PCC --- The Personal C Compiler is available as shareware. It used to be marketed as the deSmet C compiler and had a generally good reputation for quick compile times and tight code. Unfortunately, the product hasn't been upgraded in quite a while and can't stand too much comparison. Mix Power C costs less to buy than PCC and offers better performance and the ANSI compliance that PCC lacks. GNU C/C++ (GCC, G++) -------------------- Available from the Free Software Foundation, GCC and G++ are the only compilers listed here available for free without a guilty conscience. Originally written for Unix systems, there are several DOS ports available, all of which require some sort of DOS extender technology built-in in order to work in DOS's limited memory. Performance is decent, but not earth-shattering and if you plan to use one of these to write commercial code, be sure and read the license agreement *very* closely. DUNFIELD MICRO-C ---------------- There have been many "small" or "tiny" C's over the years, some useful for teaching the rudiments of compiler construction, others not much use for anything. Small C's typically lack structs, unions, bit fields, and even long integers. Why bother listing this one then? For one thing, the source code (available when you register the shareware version) is quite decent and really can teach you something about compiler internals. But Micro-C is genuinely useful for a lot more reasons. The author also produces cross-assemblers for a variety of microprocessors and provides plug-in code generators for his C compiler to use with those chips as well. The 80x86 version comes ready to compile either PC or embedded code. Included in the PC library are support for writing TSR's, interrupt-driven serial I/O, and screen windowing. Amazingly, it also sports an optimizer, but requires MASM or equivalent for compiling PC applications. Supporting small and tiny model only, Micro-C executables are phenomenally small. "Hello world" programs that run 5-6K on other ocmpilers run under 600 bytes when compiled with Micro-C.