[comp.os.msdos.programmer] Which C compiler: TC or MS?

nellis@motcid.UUCP (Michael R. Nellis) (09/19/90)

I am looking to purchase a 'C' compiler.
My previous experience with compilers is with
the Microsoft 5.0 C compiler with QuickC and
Codeview.  I have talked to persons with 
TurboC experience and have heard good things.
The latest version of MS C, 6.0, is said to
have many new features and a new look.  Does
anyone have any words of wisdom for me?  Does
the price difference of ~$150 for the professional
TurboC versus the ~$310 for the MS C 6.0 have
a factor?  Money is not an issue here, support,
and functionality is.

I would greatly appreciate any input and will post
the results if anyone is interested.

woody@eos.UUCP (Wayne Wood) (09/19/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>a factor?  Money is not an issue here, support,
>and functionality is.
>

i use both TC2.0 and MSC6.0...

the two are equivalent with one exception... MSC6.0 is slow...
i mean *SLOW*... i mean glacial...

people just don't live that long...

i'm trying to say it's slow...

/***   woody   ****************************************************************
*** ...tongue tied and twisted, just an earth bound misfit, I...            ***
*** -- David Gilmour, Pink Floyd                                            ***
****** woody@eos.arc.nasa.gov *** my opinions, like my mind, are my own ******/

stever@Octopus.COM (Steve Resnick ) (09/20/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>
>
>
>I am looking to purchase a 'C' compiler.
>My previous experience with compilers is with
>the Microsoft 5.0 C compiler with QuickC and
>Codeview.  I have talked to persons with 
>TurboC experience and have heard good things.
>The latest version of MS C, 6.0, is said to
>have many new features and a new look.  Does
>anyone have any words of wisdom for me?  Does
>the price difference of ~$150 for the professional
>TurboC versus the ~$310 for the MS C 6.0 have
>a factor?  Money is not an issue here, support,
>and functionality is.
>
>I would greatly appreciate any input and will post
>the results if anyone is interested.



<Putting on asbestos suit>

These are my own opinions, based on my experiences with Turbo C 2.00
and Microsoft C 5.1 & 6.0

Turbo C is a fairly robust compiler that is more or less ANSI compliant.
(I believe it was released before the officail standard was, but conforms
to the draft) TC is FAST! and it has a robust set of library routines and
tools. It generates reasonable code. The integrated development environment
is "cute" but not terribly functional for big projects. There are several
well known bugs in the compiler and/or library routines, but for the most
part they can worked around easily without looking kludgy.

The debugger is fairly good, and from what I understand the lastest version
of Turbo Debugger is even better.

Microsoft C is a robust compiler as well, but the support tools provided
with it are brain-dead. the MAKE is absurd, and CodeView is simply lame.
6.0 is HIGHLY ANSI compliant, and runs a great deal faster than 5.1, but
this is still fairly slow in comparison to TC.

Both support a fairly robust graphics package, although I like BGI (TC) better.

Microsoft C seems to be the "industry standard" and the compiler is available
for both DOS and OS/2 platforms, which is important if you want to develop
programs for both systems.

Both compilers are supported very well by third party library vendors.

As far as vendor support goes for the compilers, if you want GOOD support
from Microsoft, you gotta pay for it. On the rare occasion I have had to
talk to Borland they were both pleasant and helpfull.

Obviously, I prefer Turbo C over Microsoft, but this is largely due to
personal preference - They are both good compilers and both have their
drawbacks. I can note, however, that I work with Turbo C daily, and have
developed a 28000 line application with it, which is for the most part,
still easy to debug and maintain (although I guess a lot of that has to do
with style rather than the compiler).

My $.02 :)

Steve

<Removing asbestos suit>


-- 
----------------------------------------------------------------------------
steve.resnick@f105.n143.z1@FIDONET.ORG #include<std_disclaimer.h>
Flames, grammar errors, spelling errrors >/dev/nul
----------------------------------------------------------------------------

rommel@lan.informatik.tu-muenchen.dbp.de (Kai-Uwe Rommel) (09/20/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>I am looking to purchase a 'C' compiler.
>anyone have any words of wisdom for me?  Does

I know both Compilers (but not TC++) and I am using C 6.00 now. MS C is
more powerfull. It's not some spot features, it's the overall
functionality. Also, it allows development for MS Windows (with SDK) and
OS/2 and OS/2 PM (without additional SDK!). Optimization is better.
This costs it's price: much more used disk space and it is slow.

I have tried a TC 1.0 long time ago and had problems compiling sources
from Unix systems, MS C 5.1 was more reliable at this time. But this may
have changed for TC 2.0 now, but I doubt.

If you plan to use OS/2 in the future, it is probably better to get MS C
now.

Kai Uwe Rommel

--
/* Kai Uwe Rommel
 * Munich
 * rommel@lan.informatik.tu-muenchen.dbp.de
 */

bnathan@ncratl.Atlanta.NCR.COM (Bob Nathan) (09/20/90)

If being "mainstream" is important to you, then disregard the following:
Zortech C++ makes a pretty good compiler that you should seriously 
investigate before you plunge.  Especially since it does both C and C++
quite effectively.  Walter Bright (the author) can be found commenting
(and responding to questions) both on this network and on Zortech's bbs, 
in the way of support.  [cf Microsoft ONLINE, or COMPUSERVE 'GO BORLAND']  

This comes from experience at the periphery of a C++ development, and
is not my company's official line, BTW.  I don't suppose we have
an official line, come to think of it.    Bob.Nathan@Atlanta.NCR.COM

joe@proto.COM (Joe Huffman) (09/22/90)

In article <4641@feldspar30.UUCP>, nellis@motcid.UUCP (Michael R. Nellis) writes:
> have many new features and a new look.  Does
> anyone have any words of wisdom for me?  Does
> the price difference of ~$150 for the professional
> TurboC versus the ~$310 for the MS C 6.0 have
> a factor?  Money is not an issue here, support,
> and functionality is.

Zortech sells the Developers Edition (discount mail order is about $400.00)
which includes the debugger, source code to the runtime library, C++ compiler,
C++ class library, etc, etc). 

Support is free and available via email.  It supports Windows, OS/2 (extra
option), Rational Systems DOS extender, Virtual Code Management, with 
Phar Lap and UNIX support on the way (to be demo'ed next week at C++ At Work).

---
Zortech mailing list: send email to 'ztc-list-request@uunet.uu.net' with:
Add: your-user-name@your-machine-name
In the body of the message.
---
Send Zortech bug reports to 'zortech-bugs@proto.com'
---
Zortech is my major source of income.  Statements about them or their 
competitors cannot be totally without bias.  
-- 
joe@proto.com
FAX: 208-263-8772

cgeisler@maytag.waterloo.edu (Craig Eisler) (09/22/90)

Might I humbly suggest the WATCOM C 8.0 compiler/tools over either of those
choices.

The optimizer is as good as Microsoft 6.0 (only it generates working
code, as opposed to MS 6.0); as well, the compiler runs faster.

The linker is faster and smarter (and will soon support VROOMM technology)

The debugger is excellent, a far superior product to (gag) CodeView.
You can even debug 386-protect mode programs with it.

On top of it all, there are 386-protect mode versions of the compiler and
the linker; they just SCREAM on a 386 machine (compared to non-protect
mode versions).

I've used a number of different development platforms, and the WATCOM one 
is by far the best.

Just one lone voice in the wilderness,
craig
-- 
Craig Eisler, still hiding from the real world.
University of Waterloo, Waterloo, Ontario.

wew@naucse.cse.nau.edu (Bill Wilson) (09/22/90)

From article <4552@tuminfo1.lan.informatik.tu-muenchen.dbp.de>, by rommel@lan.informatik.tu-muenchen.dbp.de (Kai-Uwe Rommel):
> In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>>I am looking to purchase a 'C' compiler.
>>anyone have any words of wisdom for me?  Does
> 
> I know both Compilers (but not TC++) and I am using C 6.00 now. MS C is
> more powerfull. It's not some spot features, it's the overall
> functionality. Also, it allows development for MS Windows (with SDK) and
> OS/2 and OS/2 PM (without additional SDK!). Optimization is better.
> This costs it's price: much more used disk space and it is slow.
> 
> I have tried a TC 1.0 long time ago and had problems compiling sources
> from Unix systems, MS C 5.1 was more reliable at this time. But this may
> have changed for TC 2.0 now, but I doubt.
>
I use TC++ and am very fond of it.  I have tried MS and think the
Borland products are superior.  I didn't have much of a problem
porting Unix code to TC 2.0 and now that I have C++ it is even
easier.  The new version has a wonderful environment and has an
ANSI switch that can be used to make ANSI only programs.  

If you are going to be doing Windows or OS/2 development, you 
will need to get MSC.  I haven't heard when Borland will be
offering a compiler for this.  If your programs are for DOS only,
I would highly recommend Turbo C++.

 
Let sleeping dragons lie........               | The RoleMancer 
----------------------------------------------------------------
Bill Wilson             (Bitnet: ucc2wew@nauvm | wilson@nauvax)
Northern AZ Univ  Flagstaff, AZ 86011
-- 
Let sleeping dragons lie........               | The RoleMancer 
----------------------------------------------------------------
Bill Wilson             (Bitnet: ucc2wew@nauvm | wilson@nauvax)
Northern AZ Univ  Flagstaff, AZ 86011

alex@bilver.UUCP (Alex Matulich) (09/24/90)

In article <1990Sep21.195632.17253@maytag.waterloo.edu> cgeisler@maytag.waterloo.edu (Craig Eisler) writes:
>I've used a number of different development platforms, and the WATCOM one 
>is by far the best.
>
>Just one lone voice in the wilderness,

And here's another lone voice (me) in the wilderness:

I prefer Lattice.  After using Microsoft's and Borland's C compilers,
discovering Lattice was a relief.  I never want to go back.  Lattice's
function libraries are far more comprehensive than either MSC's or TC's
(especially in the graphics), the manuals are superb, and so is the
optimizing and code generation.  So is the technical support.

Or so WAS the technical support.  Lattice will continue to correct
problems as they crop up, but they said they will not give the compiler
any more capabilities.  That's unfortunate.  But it still does everything
I want, and very well too.
-- 
 _ |__  Alex Matulich   (alex@bilver.UUCP)
 /(+__>  Unicorn Research Corp, 4621 N Landmark Dr, Orlando, FL 32817
//| \     UUCP:  ...uunet!tarpit!bilver!alex
///__)     bitnet:  IN%"bilver!alex@uunet.uu.net"

nol2321@dsacg4.dsac.dla.mil (Jim Dunn) (09/26/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>I am looking to purchase a 'C' compiler.
>My previous experience with compilers is with
>the Microsoft 5.0 C compiler with QuickC and
>Codeview.  I have talked to persons with 
>TurboC experience and have heard good things.
>The latest version of MS C, 6.0, is said to
>have many new features and a new look.  Does
>anyone have any words of wisdom for me?  Does
>the price difference of ~$150 for the professional
>TurboC versus the ~$310 for the MS C 6.0 have
>a factor?  Money is not an issue here, support,
>and functionality is.
>
>I would greatly appreciate any input and will post
>the results if anyone is interested.

I'm sorry but I can't resist this one.  First of all, DON'T get Microsoft 6.0
unless you have a VERY SOUPED UP MACHINE!!!  You can get all the ANSI comp-
atibility and integrated environment with Microsoft Quick C v2.51.  There
will be many who will suggest that you go with C++, (i.e. Borland's Turbo C++)
but that would probably be a mistake if you wanted a C++ toolbox, or windows
programming support, etc.  (note, I'm not a C++ programmer, and I WON'T be for
quite a while...)  But from what I've heard/read/etc. Zortech C++ is the BEST
C++ package.

I'm still going to use Microsoft C 5.1 and Quick C 2.01, (they're compatible
with one another, as the MsC 6.0 and Quick C 2.5 are compatible), here at
work, and use the 2.5 at home...  The new ANSI compatibility can be a chore,
but they're making the rules, right!?!

:)

Also, as a little side note, I have nothing to do with Microsoft or Zortech
or Borland, besides using some of their products, but I DO happen to have a
copy (still in the plastic) of Microsoft Quick C v2.01 forsale for $40 (the
shipping is included) and Borland's Turbo C v2.00 forsale for $60 (shipping
included)...

Jim, jdunn@dsac.dla.mil

asylvain@felix.UUCP (Alvin E. Sylvain) (09/26/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>I am looking to purchase a 'C' compiler.         [...]
>the Microsoft 5.0 C compiler with QuickC and     [...]
>a factor?  Money is not an issue here, support,
>and functionality is.                            [...]
[[[ muchly deleted, of course ]]]

(Please excuse first-time contributor if he happens to F Up Beyond All Repair)

In all the fuss over C compilers for the PC, not much mention is made
of a small, inexpensive C compiler from a company called MIX, called
Power C.  Someone besides me must have tried it, and have an opinion!

It has gotten favorable media reviews, costs relatively nothing,
($19.95, use your own editor) is very, *very* fast, very, *very*
comprehensive, and 99% ANSI compliant (according to reviews).  It out-
performs Turbo C (very fast reputation, well deserved) in some
independent speed benchmarks, including compilation and execution times.

Even without the compiler, the included manual is _well_worth_ the price.

I find it *quite* satisfactory.  A couple of reviews mentioned a lack
of large memory model, which is *not* correct; the latest versions *do*
support the large memory model, which I have used successfully.

If you are willing to shell out a few hundred bucks for a C compiler,
another 20 won't hurt much.  You might as well try out the cheap one
before you shell out the BIG bucks.  If you don't like it, consider
yourself to have bought an *excellent* manual and C tutorial.

SUPPORT: I reported a bug in an earlier version; they sent me a library
source code patch for it, since I had purchased the library source code.
I can't vouch for their support otherwise, having had no other problems.

DISCLAIMER: I'm *not* an employee of MIX ... no relation whatsoever,
no advertising royalties (too bad) ... I don't like their debugger,
(sold separately).  I also don't like their integrated 'Project'
('make') utility (can't handle include file changes), but it does work.
Instead, I use a UNIX@ look-alike 'make' from shareware.

MIX also sells UNIX@ look-alike tools for MS-DOS, which I can't vouch
for (haven't tried).  But it's attractively priced (read: CHEAP), and
does include a 'make' utility.

@ lest we forget, UNIX is (or was) a registered trademark of AT&T :-)
========================================================================
"I got protection for my    |               Alvin "the Chipmunk" Sylvain
affections, so swing your   |   Natch, nobody'd be *fool* enough to have
bootie in my direction!"    |   *my* opinions, 'ceptin' *me*, of course!
========================================================================

raymond@math.berkeley.edu (Raymond Chen) (09/30/90)

A summary of articles discussing "Which C compiler for the IBM PC
should I buy?" is available for anonymous ftp from math.princeton.edu
[128.112.128.157] as the file pub/rjc/csip/compilers.Z.  I try to
keep it up to date, but the recent rash of discussion has yet
to be added to the list.  (For people who can't email, send a message
to rjc@math.princeton.edu with a blank subject line, and containing
as the body the single line "send compilers" (no quotation marks).  Do
not append a signature.)

sidney@saturn.ucsc.edu (Sidney Markowitz ) (09/30/90)

In article <1990Sep27.152102.26157@pyro.ei.dupont.com>
   blair@pyro.ei.dupont.com (Grant Bair) writes:
>For those who haven't already heard, Borland has started shipping
>alpha versions of its C++ package for MICROSOFT WINDOWS. It'll only be
>a matter of time until windows support is generally available for
>Borland developers.

To clear things up a bit, Borland has announced nothing more than
their intention to support Windows, with no specific products or
dates. Borland has a "no vaporware" policy that usually means
announcing a product on the day it ships. The Sept 24 article in PC
Week mentioned two products. One of them, Turbo C++ 1.01, it said is
already shipping. It isn't. You can make up your own mind about the
accuracy of the less verifiable statements in the article about
Borland's internal activity on Windows products. PC Leak, er, Weak,
um, I mean WEEK, tends to publish stuff like that. Their track record
on guessing Borland's actions hasn't been all that good. If they don't
include a quote from a Borland spokesperson I would tend to take what
they say with a big grain of salt.

-- sidney markowitz <sidney@ai.mit.edu>
   [Note: account <sidney@saturn.ucsc.edu> is about to disappear]
Disclaimer: I work for Borland. I do not speak for Borland.

mitchell (Bill Mitchell) (10/01/90)

In article <151565@felix.UUCP> asylvain@felix.UUCP (Alvin E. Sylvain) writes:
>
>In all the fuss over C compilers for the PC, not much mention is made
>of a small, inexpensive C compiler from a company called MIX, called
>Power C.  Someone besides me must have tried it, and have an opinion!
>

I tried it when it first came out.  I recall that it had a VERY nice
debugger included, and that it used its own unique object file format
(something other than .obj files).  I remember being impressed overall
and putting it back on the shelf because of the incompatable object file
format, and maybe because of a runtime library missing functions I
was used to having.  MIX subsequently released a later version called
(I think) Power-C, which I bought but never installed.

>Even without the compiler, the included manual is _well_worth_ the price.

I remember thinking the same thing.

blair@pyro.ei.dupont.com (Grant Bair) (10/01/90)

In article <7343@darkstar.ucsc.edu> sidney@saturn.ucsc.edu (Sidney Markowitz ) writes:
>In article <1990Sep27.152102.26157@pyro.ei.dupont.com>
>   blair@pyro.ei.dupont.com (Grant Bair) writes:
>>For those who haven't already heard, Borland has started shipping
>>alpha versions of its C++ package for MICROSOFT WINDOWS. It'll only be
>>a matter of time until windows support is generally available for
>>Borland developers.
>
>To clear things up a bit, Borland has announced nothing more than
>their intention to support Windows, with no specific products or
>dates. Borland has a "no vaporware" policy that usually means
>announcing a product on the day it ships. The Sept 24 article in PC
>Week mentioned two products. One of them, Turbo C++ 1.01, it said is
>already shipping. It isn't. You can make up your own mind about the
>accuracy of the less verifiable statements in the article about
>Borland's internal activity on Windows products. PC Leak, er, Weak,
>um, I mean WEEK, tends to publish stuff like that. Their track record
>on guessing Borland's actions hasn't been all that good. If they don't
>include a quote from a Borland spokesperson I would tend to take what
>they say with a big grain of salt.
>
>-- sidney markowitz <sidney@ai.mit.edu>
>   [Note: account <sidney@saturn.ucsc.edu> is about to disappear]
>Disclaimer: I work for Borland. I do not speak for Borland.

Okay, I'll just pretend that the package that I saw on a colleague's desk
wasn't really what it claimed to be.....:-)


-- 
+-----------------------------------------------------------------------------+
|Grant C Blair, DuPont Imaging Systems, Newark, DE 19702, USA                 |
|blair@pyro.ei.dupont.com (192.58.195.64)        (302)-733-9533               |
+-----------------------------------------------------------------------------+

catfood@NCoast.ORG (Mark W. Schumann) (10/03/90)

In article <151565@felix.UUCP> asylvain@felix.UUCP (Alvin E. Sylvain) writes:
>>Money is not an issue here, support,
>>and functionality is.                            [...]
>In all the fuss over C compilers for the PC, not much mention is made
>of a small, inexpensive C compiler from a company called MIX, called
>Power C.  Someone besides me must have tried it, and have an opinion!
>I find it *quite* satisfactory.
>If you are willing to shell out a few hundred bucks for a C compiler,
>another 20 won't hurt much.  You might as well try out the cheap one
>before you shell out the BIG bucks.  If you don't like it, consider
>yourself to have bought an *excellent* manual and C tutorial.
>SUPPORT: I reported a bug in an earlier version; they sent me a library
>source code patch for it, since I had purchased the library source code.
 
   I've posted in the past my complaints about some cryptic error
   messages coming out of the Power C compiler/optimizer phase.
   Here's an example of what I'm talking about.  Perhaps someone
   out there in net-land can help me out.  (Or we could establish
   alt.powerc to beat the subject to death?)  I do have to point
   out again that Mix Software's tech people don't seem to be very
   helpful on questions like these.  I am posting this to get some
   assistance with the problem, but also in case it proves unfixable
   to warn others about what can happen if you push Power C too hard.
 
   The situation is this: I am working on an IBM PC-compatible
   screen I/O library, of course using direct screen read/write
   when possible.  To avoid CGA chromablizzard problems, I intend
   to use two sets of read/write functions.  For CGA monitors,
   the functions are called $CgaPeek() and $CgaPoke(); otherwise, I
   want to use $MonoPeek() and $MonoPoke().  To call those functions,
   I use function pointers $Peek() and $Poke(), which are set to the
   CGA functions (when necessary) or the Mono functions.  I plan
   to test for a CGA monitor by calling function $isCGA(), but at
   this point it is a stub function that always returns zero.
 
   My library consists of three source files.  DAZZPRIM.C contains
   the source for the "primitive" functions, whose names begin with
   the dollar sign and which should be called only from functions
   in this library.  DAZZ.C contains higher level functions such as
   clear(), say(), set_attr(), and so on.  Finally, I'm implementing
   an analogue of the Clipper achoice() function in file ACHOICE.C.
 
   I am using a Power C project file named DAZZ.PRJ to compile each
   source file and combine the objects into the library DAZZLIB.MIX.
   Here's what Power C gives me:
 
------------------------------------------------------------------------------
 
D:\DAZZ> PC DAZZ
Power C - Version 2.0.0
(C) Copyright 1989 by Mix Software
Project: dazz.PRJ
No errors detected           <<< compiling dazzprim.c >>>
No errors detected           <<<           dazz.c     >>>
No errors detected           <<<           achoice.c  >>>
New library: dazzlib.MIX
 3027 lines compiled
Optimizing ...
$isCGA       Invalid object tag      <<< What's this??? >>>
achoice  Errors detected
   34 functions optimized in 3 files
 
D:\DAZZ>
 
------------------------------------------------------------------------------
 
   My question for the Mix people, and now for you, is:
 
      1. What's an object tag?
      2. Why is it invalid?
      3. What can I do to fix it?  (If I have to modify
          the source, that's okay.)
 
   The source of ACHOICE.C, with blank lines omitted, is as follows:
 
------------------------------------------------------------------------------
 
#include "dazz.h"
#include <bios.h>
#include <conio.h>
#include <stdarg.h>
#include <stddef.h>
char userkeys[] = {ESCAPE, LEFT, RIGHT, HOME, END, ENTER, 0};
/*=======================================================================
achoice--
  Clipper-style Achoice() function.
=======================================================================*/
int achoice (
    int win_top,
    int win_lft,
    int win_btm,
    int win_rgt,                  /* Window top-bottom-left-right */
    char *options[],              /* Null-terminated string array */
    unsigned int argflag, ... )   /* 1 = toggles follow; 2 = userfunc */
{
int win_hgt, win_wid;
int start = 0, current = 0, m = 0;
register int k;
unsigned count;
INDICATOR flag = repaint;
ATTRIB cursor_color = REVERSED;
ATTRIB normal_color = $GetAttrib();
/* Optional arguments */
va_list argptr;
int *toggles;
USERFUNC UserFunc;
char s[80];
toggles = NULL;
UserFunc = NULL;
  /* Get the optional arguments */
  va_start (argptr, options);
  if (argflag & 0x01) toggles = va_arg (argptr, int);
  if (argflag & 0x02) UserFunc = va_arg (argptr, USERFUNC);
  /* Count the array elements */
  for (count = 0; options[count] != NULL; count++);
  /* Get window height and width */
  win_hgt = win_btm - win_top + 1;
  win_wid = win_rgt - win_lft + 1;
  while (flag == none || flag == repaint) {
    if (flag == repaint) {
      /* bang top of window */
      if (current < start) {
        start = current; /* cursor to top of window */
        if (UserFunc != NULL)
          flag = $UserFunc (UserFunc, 1, options, &current, start, k);
        }
      /* bang bottom of window */
      else if (current >= start + win_hgt - 1) {
        start = current - win_hgt + 1;
        if (UserFunc != NULL)
          flag = $UserFunc (UserFunc, 2, options, &current, start, k);
        }
        { register int i;
      /* repaint the window */
      for (i = 0; i < win_hgt; i++) {
        if (options[i] == NULL) break;
          clear_attr (win_top + i, win_lft, win_top + i,
             win_rgt, global_colors.standard);
          say_attr (win_top + i, win_lft, options[start+i],
           (toggles == NULL || toggles[start+i] ?
           global_colors.standard : global_colors.unselected));
        flag = none;
        } }
    highlight (current - start + win_top, win_lft, win_wid);
    /* Keyboard is idle for a sec */
    flag = $UserFunc (UserFunc, 0, options, &current, start, k);
    k = $Inkey();
    if (UserFunc == NULL && isalpha (k))
      m = $ScanChoice (options, current, k);
    else if (UserFunc == NULL)
      switch (k) {
        case UP:        m--;    break;
        case DOWN:      m++;    break;
        case HOME:
        /* case CPAGEUP: */  m = 0;    break;
        case END:
        /* case CPAGEDN: */  m = count - 1;  break;
        case PAGEUP:    m -= win_hgt;  break;
        case PAGEDOWN:  m += win_hgt;  break;
        case ENTER:     flag = chosen;  break;
        case ESCAPE:
        case LEFT:
        case RIGHT:     flag = quit;  break;
        }
    /* Keystroke exception: User-function called with `3' argument */
    else if (isalpha (k) || (strchr (userkeys, k) != NULL))
      flag = $UserFunc (UserFunc, 3, options, &current, start, k);
    else switch (k) {
      case UP:
        m--;
        break;
      case DOWN:
        m++;
        break;
      case PAGEUP:
        m -= win_hgt;
        break;
      case PAGEDOWN:
        m += win_hgt;
        break;
      }
    if ((flag == none) || (flag == repaint)) {
      /* My submission to the obfuscated code contest...           */
      /* Purpose: 1) flag set to repaint if outside current window */
      /*          2) m set within range 0 to count -1 inclusive    */
      flag = (m <= start || m >= start + win_hgt - 1) ? repaint : none;
      m = (m < 0) ? 0 : (m >= count) ? count - 1 : m;
      /* Now unhighlight what was formerly the `current' item. */
      if (m != current) {
        unhighlight (current - start + win_top, win_lft, win_wid);
        current = m;
        }
      m = current;
      }
    }
  switch (flag) {
    case chosen:  return current;    break;
    case quit:    return -1;         break;
    case error:   return -1;         break;
    default:      return -1;         break;
    }
  }
}
/*=======================================================================*/
INDICATOR $UserFunc (
      int (* UserFunc)(),
      int status,
      char **array,
      int *current,
      int start,
      int lastkey )
{
  if (UserFunc == NULL)
     return none;
  else {
    switch (UserFunc (1, current, current - start)) {
      case 0:  /* abort selection, returning zero */
        return quit;
        break;
      case 1:  /* return current value */
        return chosen;
        break;
      case 2:  /* continue selection process */
        return none;
        break;
      case 3:  /* go to the next item whose first        */
        /* character matches the last key pressed */
        current = $ScanChoice (array, current, lastkey);
        return none;
        break;
      default:  /* error: user function should return only */
            /* zero, one, two, or three!               */
        return error;
      }
    }
  }
/*=======================================================================*/
int $ScanChoice (char **array, int begin_point, int keyvalue)
{
int x;
  x = begin_point;
  do {
    x++;
    if (array[x] == NULL) x = 0;    
    if (toupper (array[x][0]) == toupper (keyvalue))
      return x;
    } while (x != begin_point);
  return begin_point;
  }
/*=======================================================================*/
 
 
   That's all.  If anyone can help with this (which sure looks like
   a compiler bug), please post or e-mail me.  Thanks to all.
 
----------------------------------------------------------------
 Mark W. Schumann\3111 Mapledale Avenue\Cleveland OH 44109 USA
 UUCP: ...!mailrus!usenet.ins.cwru.edu!ncoast!catfood
 Internet: catfood@ncoast.org
 "The AS/400 is for people who move their lips when they type."
----------------------------------------------------------------
-- 
============================================================
Mark W. Schumann  3111 Mapledale Avenue, Cleveland 44109 USA
Domain: catfood@ncoast.org
UseNet: ...usenet.ins.cwru.edu!ncoast!catfood
============================================================

broehl@watserv1.waterloo.edu (Bernie Roehl) (10/04/90)

In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>The latest version of MS C, 6.0, is said to
>have many new features and a new look.  Does
>anyone have any words of wisdom for me?

Yes.  "Don't buy version x.0 of *anything* from Microsoft".

If you're going to buy a Microsoft product, wait until at least
version x.1 (if you don't believe me, check out DOS 3.0, DOS 4.0, Microsoft
C 4.0, etc etc)

Personally, I'm *very* happy with Turbo C 2.0, and have no plans to use
anything else.

-- 
	Bernie Roehl, University of Waterloo Electrical Engineering Dept
	Mail: broehl@watserv1.waterloo.edu OR broehl@watserv1.UWaterloo.ca
	BangPath: {allegra,decvax,utzoo,clyde}!watmath!watserv1!broehl
	Voice:  (519) 885-1211 x 2607 [work]

broehl@watserv1.waterloo.edu (Bernie Roehl) (10/04/90)

In article <4552@tuminfo1.lan.informatik.tu-muenchen.dbp.de> rommel@lan.informatik.tu-muenchen.dbp.de (Kai-Uwe Rommel) writes:
>[in C 6.00...] Optimization is better.

It's also broken.  Stay away from optimization switches (certainly on 5.00,
probably on 6.00).

-- 
	Bernie Roehl, University of Waterloo Electrical Engineering Dept
	Mail: broehl@watserv1.waterloo.edu OR broehl@watserv1.UWaterloo.ca
	BangPath: {allegra,decvax,utzoo,clyde}!watmath!watserv1!broehl
	Voice:  (519) 885-1211 x 2607 [work]

nol2321@dsacg4.dsac.dla.mil (Jim Dunn) (10/05/90)

I guess there's only a few things that really seem ridiculous to me, ONE of
which is someone who WORKS for a company, but doesn't SPEAK for that company,
but spends a TREMENDOUS amount of time trying to straighten people out who
say something about THAT company.

I.e.  Microsoft and Borland and all the others companies employees, when
reading an e-mail or news-mail about THEIR company, should probably keep
their "fingers" shut and simply re-route the msg to the appropriate
person WHO CAN SPEAK FOR THE COMPANY!!!

E.g.  And while you're at it, Borland employee, ask your bosses why they're
not supporting Windows and OS/2 programming???

Anonymously Me, (just check the return address, I'm too poor to afford a sig)

matthew1@stretch.cs.mun.ca (Matthew J. Newhook) (10/05/90)

catfood@NCoast.ORG (Mark W. Schumann) writes:

[text deleted...]
>------------------------------------------------------------------------------
> 
>D:\DAZZ> PC DAZZ
>Power C - Version 2.0.0
>(C) Copyright 1989 by Mix Software
>Project: dazz.PRJ
>No errors detected           <<< compiling dazzprim.c >>>
>No errors detected           <<<           dazz.c     >>>
>No errors detected           <<<           achoice.c  >>>
>New library: dazzlib.MIX
> 3027 lines compiled
>Optimizing ...
>$isCGA       Invalid object tag      <<< What's this??? >>>
>achoice  Errors detected
>   34 functions optimized in 3 files
> 
>D:\DAZZ>
> 
>------------------------------------------------------------------------------
> 
>   My question for the Mix people, and now for you, is:
> 
>      1. What's an object tag?
>      2. Why is it invalid?
>      3. What can I do to fix it?  (If I have to modify
>          the source, that's okay.)
> 

I'm no mix person, but I would bet that the problem is caused by you using
a $ in the function name.  Try calling them something else...
-- 
----------------matthew1@stretch.cs.mun.ca 
"Living in the limelight; the universal dream for those who wish to 
seem. Those who wish to be must put aside the alienation, get on with 
the facination, the real relation, the underlying theme" - Rush

alanf@bruce.cs.monash.OZ.AU (Alan Grant Finlay) (10/06/90)

In article <1990Oct3.154752.6996@NCoast.ORG>, catfood@NCoast.ORG (Mark W. Schumann) writes:
>    I've posted in the past my complaints about some cryptic error
>    messages coming out of the Power C compiler/optimizer phase.
>    Here's an example of what I'm talking about.  Perhaps someone
>    out there in net-land can help me out.  (Or we could establish

I think you will be lucky to get anyone to solve this for you.  You have 
included too much information.  My (and probably the standard) practice in
this sort of situation (an incomprehensible error message from a compiler) is
to use a divide and conquer approach.  If you think you know which module the
"error" is in then replace the other modules with stubs so we can be sure.
Now if the error is still there then start cutting the culprit module in half
until you have the minimal set of statements that still cause the "error"
message.  Usually by now you will have discovered what the problem is.  If
not try changing the names of any identifiers that might be given another
interpretation or even all the identifiers just in case.  If you still have 
an "error" then let us know.  In some cases this strategy does not work 
(for example there is a bug in the compiler which generates a "random" error
message when the 1024th source line is over 60 characters long).  The strategy
depends upon the fact that such bugs are not USUALLY very context dependent.
You cannot expect to generate the error message with just one segment of the
original - there is usually some context sensitive aspect.  Hence you 
eventually have to work very painstakingly - rather like digging up an
archeological relic.  When you finaly advertise a four line program that is
obviously correct and causes the message you can expect to get the implementor's
attention pretty quickly - such people are really quite proud of their work.

N.B. Have you tried an alternative compiler?  (Just in case!)
N.N.B. If your complaint is simply that you expect better error messages then
consider the following quotation: "Any fool can write a compiler for correct
programs" - J.S. Rohl.  It is really really hard to anticipate every form of
error in a source program and provide meaningfull diagnostics.  Consider
how lucky you are that your compiler doesn't just have 3 error messages like
some I have heard of.

jagrogan@vax1.tcd.ie (10/25/90)

In article <1990Oct3.203954.508@watserv1.waterloo.edu>, broehl@watserv1.waterloo.edu (Bernie Roehl) writes:
> In article <4641@feldspar30.UUCP> nellis@motcid.UUCP (Michael R. Nellis) writes:
>>The latest version of MS C, 6.0, is said to
>>have many new features and a new look.  Does
>>anyone have any words of wisdom for me?
> 
> Yes.  "Don't buy version x.0 of *anything* from Microsoft".
> 
> If you're going to buy a Microsoft product, wait until at least
> version x.1 (if you don't believe me, check out DOS 3.0, DOS 4.0, Microsoft
> C 4.0, etc etc)
> 
> Personally, I'm *very* happy with Turbo C 2.0, and have no plans to use
> anything else.
> 
I must say that for Windows programming, the MSC6.0 is handy to have with
S.D.K., but for anything else, TC2.0 is just fine.
Personally, I also prefer TC2.0, it's more of a programmers environment.
John.
-- 
-------------------------------------------------------------------------------
					   jagrogan@vax1.tcd.ie@cunyvm.cuny.edu
    3rd Year Computer Science                     jagrogan@vax1.tcd.ie
     Trinity College Dublin.                      jagrogan@unix1.tcd.ie
                                                  jagrogan@tcdmath.uucp
-------------------------------------------------------------------------------
	"I haven't lost my mind.....I'm sure it's backed up here somewhere!"