[comp.os.msdos.programmer] TurboC and TurboC++

bahrd@yoda.byu.edu (01/08/91)

I was wondering what the difference between TurboC 2.0 and TurboC++ 1.0 in the
standard C mode was?  Is there any portability porblems if I write code in
TurboC++ using standard C conventions and then giving the code to a friend who
has Turbo C 2.0?  Please let me know!!!

bahrd@yoda.byu.edu
bahrd@spock.byu.edu

Thanx much!!!
Doug
1/7

hollen@megatek (Dion Hollenbeck) (01/09/91)

In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:
> 
> I was wondering what the difference between TurboC 2.0 and 
> TurboC++ 1.0 in the
> standard C mode was?  Is there any portability porblems if I write code in
> TurboC++ using standard C conventions and then giving the code 
> to a friend who has Turbo C 2.0?  Please let me know!!!

Unfortunately I do not know specifics, but I just talked to Borland
Customer Service about upgrading from TC to TC++ and one question
that I asked was "Will my C programs just compile without change?"
and they informed me that I would have to PORT them.  They also
informed me that the upgrade was $125 and that they did not plan
any further upgrades for Turbo C.  The price seemed a little steep
to me since I need none of the OOP capabilities of C++ and I
can buy TC+ Professional for $169 almost anywhere.  What I really
wanted was the VROM technology.  Oh well, I guess I will just have
to stick with PMOM (Poor Man's Overlay Manager) if I exceed
reasonable code size.

--
	Dion Hollenbeck             (619) 455-5590 x2814
	Megatek Corporation, 9645 Scranton Road, San Diego, CA  92121
        uunet!megatek!hollen       or  hollen@megatek.uucp

randall@Virginia.EDU (Ran Atkinson) (01/09/91)

In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:
% I was wondering what the difference between TurboC 2.0 and TurboC++
% 1.0 in the standard C mode was?  

% Are there any portability porblems if I write code in TurboC++
% using standard C conventions and then giving the code to a friend
% who has Turbo C 2.0?  Please let me know!!!

TC 2.0 was close to complying with ANSI X3.159 C but not quite there.
TC++ 1.0 is a lot closer to being ANSI X3.159 compliant.  Most C programs
will compile fine with TC++ 1.0 (all of the ones I had lying around
just compiled with an occasional new warning but no errors).  If you
write code that depends on some really fine point of ANSI C then you
might have problems with it on TC 2.0 but most programs I've seen don't
have this problem.


In article <HOLLEN.91Jan8092846@fridge.megatek>  Dion Hollenbeck writes:
> Unfortunately I do not know specifics, but I just talked to Borland
> Customer Service about upgrading from TC to TC++ and one question
> that I asked was "Will my C programs just compile without change?"
> and they informed me that I would have to PORT them.  

ALL of the C code I had working cleanly under TC 2.0 compiled as is without
any code changes for TC++ 1.00.  There was no "porting" effort at all.
Apparently Borland is trying to be safe in what they claim.

Borland has repeatedly stated that they don't plan to have any new version
of TC in the near future and specifically told me that TC++ was there
development focus and is the direction to move in.


On another note, tests I did this fall with TC++ and Zortech C++ for
MSDOS using C++ programs (that use inheritance) showed that with minor
source code changes in member functions, either Zortech or Borland
could generate the faster code or the smaller executable (sans debug
records).  This was done in part with proprietary code so I can't post
the code.  It is consistent with earlier results published in
_Computer_Language_ earlier in 1990 with regard to C (not C++)
compilers.  That article included code fragment examples for
C which give some indication of what I mean by "minor" changes.

There are a lot of factors to consider in selecting a compiler, 
but increasingly I am convinced that optimisation is not greatly
different among the main compiler vendors (Borland, Zortech, Watcom, MS)
and that support, library quality, and such are much more important
and are significantly different with different vendors.

I have no connection with any compiler vendor other than as an ordinary
customer.  Opinions expressed are the author's and aren't necessarily those
of the University of Virginia.

rschmidt@copper.ucs.indiana.edu (roy schmidt) (01/09/91)

>In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:
> 
> I was wondering what the difference between TurboC 2.0 and 
> TurboC++ 1.0 in the
> standard C mode was?  Is there any portability porblems if I write code in
> TurboC++ using standard C conventions and then giving the code 
> to a friend who has Turbo C 2.0?  Please let me know!!!
>
TC++, to begin with, has a full-up preprocessor available unlike the
rather cripple one included with TC 2.0.  Next, TC++ supports a wider
variety of pointers, etc.  I am not going to do a detailed list, but it
is unlikely that *everything* you write in TC++ as standard C can be
compiled with TC 2.0.  However, just like with any other compiler, you
can carefully write your code that so that it will compile on either
version, at the cost of not taking advantage of more sophisticated
features of the new compiler.



--
--------------------------------------------------------------------------
Roy Schmidt                 |  #include <disclaimer.h>     
Indiana University          |  /* They are _my_ thoughts, and you can't
Graduate School of Business |     have them, so there!  */

frank@cavebbs.gen.nz (Frank van der Hulst) (01/10/91)

In article <1991Jan8.195900.28885@murdoch.acc.Virginia.EDU> Ran Atkinson <randall@Virginia.EDU> writes:
B
>
>ALL of the C code I had working cleanly under TC 2.0 compiled as is without
>any code changes for TC++ 1.00.  There was no "porting" effort at all.
>Apparently Borland is trying to be safe in what they claim.

The only new warning that came up for me related to pointers to functions,
specifically using qsort().

On another note, upgrading to either TC++ or TP 6.0 should not be contemplated
if you're using a machine less than about a 12MHz 286 with a fast HD. The VROOM
system used does a lot of swapping to/from a HD.


-- 

Take a walk on the wild side, and I don't mean the Milford Track.

jwbirdsa@amc-gw.amc.com (James Birdsall) (01/10/91)

In article <HOLLEN.91Jan8092846@fridge.megatek> hollen@megatek (Dion Hollenbeck) writes:
>In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:
>> 
>> I was wondering what the difference between TurboC 2.0 and 
>> TurboC++ 1.0 in the
>> standard C mode was?  Is there any portability porblems if I write code in
>> TurboC++ using standard C conventions and then giving the code 
>> to a friend who has Turbo C 2.0?  Please let me know!!!
>
>Unfortunately I do not know specifics, but I just talked to Borland
>Customer Service about upgrading from TC to TC++ and one question
>that I asked was "Will my C programs just compile without change?"
>and they informed me that I would have to PORT them.

   I have recompiled a fair amount of code from TC 2.0 to TC++ 1.0. The
only difference I have found so far is that they reversed the polarity of
the return from feof()! This is documented in the manuals, too. Since I
don't have them in front of me, I don't remember which did which, but in
the TC 2.0 manual it clearly states the feof() returns zero for one
condition and nonzero for the other, and in the TC++ 1.0 manual it equally
clearly states the opposite.
   As I said, this is the only difference I have found so far. Your mileage
may vary, since the code I was recompiling was intended to be very portable
to begin with. Hence, it does not use esoteric features, which may well
have changed.

-- 
James W. Birdsall   WORK: jwbirdsa@amc.com   {uunet,uw-coco}!amc-gw!jwbirdsa
HOME: {uunet,uw-coco}!amc-gw!picarefy!jwbirdsa OTHER: 71261.1731@compuserve.com
"The OS shouldn't die every time the controller drools on a sector." -- a sysop
=========== "For it is the doom of men that they forget." -- Merlin ===========

tjr@cbnewsc.att.com (thomas.j.roberts) (01/11/91)

From article <1991Jan09.194126.14780@cavebbs.gen.nz>, by frank@cavebbs.gen.nz (Frank van der Hulst):
> 
> On another note, upgrading to either TC++ or TP 6.0 should not be
> contemplated if you're using a machine less than about a 12MHz 286
> with a fast HD. The VROOM system used does a lot of swapping to/from
> a HD.

A MUCH better solution is to add 1Mb of Extended or Expanded memory.
I use TC++ on an AT&T 6300 (8 MHz 8086, 640 kb, 1 Mb EMS, slow 20 Mb
disk). It is quite usable for moderate-sized C++ programs (4,000 lines
in 8 files), and larger C programs (25,000 lines in 50 files, using
make and tcc).

I use make/tcc on the C program, because I never botherd to learn
the tc environment in TC 1.0-2.0. I use the TC++ environment for the
C++ program, because I started learning C++ on small programs, and
learned the tc environment at the same time. I have now used the
TC++ environment for a 1000-line yacc/C program, with good results.

Tom Roberts
att!ihlpl!tjrob  TJROB@IHLPL.ATT.COM

cla@isis.cs.du.edu (Chuck Anderson) (01/11/91)

In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:

>I was wondering what the difference between TurboC 2.0 and TurboC++ 1.0 in the
>standard C mode was?  Is there any portability porblems if I write code in
>TurboC++ using standard C conventions and then giving the code to a friend who
>has Turbo C 2.0?  Please let me know!!!

Ihave compiled a few programs and I have seen no compatability problems. There
are some new library functions, though.

I couldn't find this documented anywhere else so I went through the 
library reference (actually the Turbo C++ Bible) and listed the library 
functions that are in C++ 1.0 and not in C 2.0. 

I suppose that this is as good a time as any to share my newfound wealth
of knowledge.

New library functions in Turboc C++ 1.0:
----------------------------------------

   * localeconv - obtain detailed information on country specific monetary
                  numeric, time, and string values (i.e., $1.00 or f1,00)

   * setlocale - define the current locale

      [note: the above are pretty useless at this time since Turbo C++ only
             supports one default locale.]

  * farheapcheck     - far heap diagnostic routines
  * farheapcheckfree
  * farheapchecknode
  * farheapfillfree
  * farheapwalk

  * heapcheck     - heap diagnostics
  * heapcheckfree
  * heapchecknode
  * heapfillfree
  * heapwalk

  * strcoll - compare strings according to the collating sequence specified
  	      by the current locale.

  * strxfrm - transforms strings so that a strcmp returns the same result
	      as strcoll would.

  * strftime - format items from a tm structure into a string

  * _OverInitEms - set up expanded memory for swapping overlays

  * _OvrInitExt - set up extended memory for swapping overlays

  * _setcursortype - (in textmode) change the shape of the cursor.

--------------------------------------

   That's all folks!

-- 
  *************************************************************************
     Chuck Anderson                uucp    :         uunet!isis!cla 
     Boulder, Co. (303) 494-6278   internet:         cla@isis.cs.du.edu 
  *************************************************************************

cla@isis.cs.du.edu (Chuck Anderson) (01/11/91)

In article <HOLLEN.91Jan8092846@fridge.megatek> hollen@megatek (Dion Hollenbeck) writes:
>In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:

>Unfortunately I do not know specifics, but I just talked to Borland
>Customer Service about upgrading from TC to TC++ and one question
>that I asked was "Will my C programs just compile without change?"
>and they informed me that I would have to PORT them.

I understand, you talked to Borland Customer Service, but I don't
understand their response. I see no differences at all between Turbo C 2.0
and the standard C in Turbo C++ 1.0 (except the library additions that I
posted earlier).

I have a number of programs that I wrote in 2.0 and have since compiled in 
C++. I didn't have to "port" anything. I just recompiled. (I haven't compared 
objects so I don't know if there were differences.)

I've recompiled a version of PCJOVE with C++ that was written and compiled
using Turbo C 2.0 and I saw absolutely no incompatabilities.

Maybe they're talking about using the C++ compile option (not standard C).

-- 
  *************************************************************************
     Chuck Anderson                uucp    :         uunet!isis!cla 
     Boulder, Co. (303) 494-6278   internet:         cla@isis.cs.du.edu 
  *************************************************************************

dougs@videovax.tv.tek.com (Doug Stevens) (01/11/91)

In article <HOLLEN.91Jan8092846@fridge.megatek>, hollen@megatek (Dion Hollenbeck) writes:
> 
> ... I just talked to Borland > Customer Service about upgrading from TC to TC+
> and ... they informed me that I would have to PORT [my programs] ...
> The price [$125] seemed a little steep to me since I need none of the 
> OOP capabilities of C++ ...

I've ported a large application, and it took only a day; the only problem I
ran into was an inherent problem in my code, which was unmasked by going to
the new compiler.

One recurring misconception about TC++ 1.0 is that it only adds C++ over
the features of TC 2.0. I use TC++ 1.0 all the time now, and I do virtually
NO C++ programming; what I got that was really valuable was a much improved
development environment (multiple concurrent windows, a framework, mouse 
support, etc). The Borland marketeers should be playing up this facet.

No connection with Borland other than as a very satisfied user.

mcramer@watdragon.waterloo.edu (Mert Cramer) (01/11/91)

From article <1991Jan11.011655.2198@isis.cs.du.edu>, by cla@isis.cs.du.edu (Chuck Anderson):
> In article <HOLLEN.91Jan8092846@fridge.megatek> hollen@megatek (Dion Hollenbeck) writes:
>>In article <350bahrd@yoda.byu.edu> bahrd@yoda.byu.edu writes:
> 
> I've recompiled a version of PCJOVE with C++ that was written and compiled
> using Turbo C 2.0 and I saw absolutely no incompatabilities.
> 
> Maybe they're talking about using the C++ compile option (not standard C).
> 
The original Turbo C++ compiler does NOT use the macr expansions for
inport and outport  calls. Instead it calls the inport or outport function.

There are, most likely, other oopses. The maintenance update v. 1.01 corrects
these ommissions (maybe). You can order it from Borland. It is free to 
holders of the v. 1.00 compiler. I was told yesterday that Borland has just
received a new shipment of the update, so delivery should be a bit better.

Mert Cramer

jwbirdsa@amc-gw.amc.com (James Birdsall) (01/12/91)

In article <1991Jan09.194126.14780@cavebbs.gen.nz> frank@cavebbs.gen.nz (Frank van der Hulst) writes:
>On another note, upgrading to either TC++ or TP 6.0 should not be contemplated
>if you're using a machine less than about a 12MHz 286 with a fast HD. The VROOM
>system used does a lot of swapping to/from a HD.

   On the contrary. I get perfectly adequate performance with TC++ on a
4.77MHz XT with lots of EMS. TC++ has more than 1M of EMS for its own use, 
and I have a 768K disk cache running as well. On the other hand, I'm not sure 
TC++ has ever needed to swap -- I compiled a 75K source file and the memory 
display never got below about 10K free (available conventional RAM about 570K).

   Running on the XT, TC++ on the average _feels_ only slightly slower than 
MSC 6.0 running on my 20MHz 386 machine at work. No benchmarks to back this 
up, however.

   One note: TC++ grabs *all* the free EMS when it starts and releases none
of it, even when you shell out to DOS. This can be annoying. A cursory
examination of the manuals revealed no way to prevent this behavior and I
haven't been annoyed enough so far to waste a lot of time looking.

-- 
James W. Birdsall   WORK: jwbirdsa@amc.com   {uunet,uw-coco}!amc-gw!jwbirdsa
HOME: {uunet,uw-coco}!amc-gw!picarefy!jwbirdsa OTHER: 71261.1731@compuserve.com
========== "Think of an animal that's small and fuzzy." "Mold." -- RM =========
=========== "For it is the doom of men that they forget." -- Merlin ===========

rschmidt@copper.ucs.indiana.edu (roy schmidt) (01/12/91)

In article <26254@uflorida.cis.ufl.EDU> jdb@reef.cis.ufl.edu (Brian K. W. Hook) writes:
>. . .  The major thing preventing me from writing ALL of my stuff with the new
>Zortech 32-bit compiler for C++ is that Zortech does not have an IDE NEAR as
>good <<rest deleted>>

(1)  check out the Options|Transfer menu in the TC++ IDE.  After
installing ZTC there, then

(2)  Look at the System menu (the three horizontal lines at the far left
of the menu bar)  You will find that ZTC will be a choice there.

(3)  Write your code using the TC++ IDE.

(4)  go to the System menu and choose ZTC.

(5)  ZTC will be called and your code will be compiled.

Of course, you can't use the integrated dedugger, etc., and no help
files (sigh), but if you like the editor and so on, this is one
solution.

t
--
--------------------------------------------------------------------------
Roy Schmidt                 |  #include <disclaimer.h>     
Indiana University          |  /* They are _my_ thoughts, and you can't
Graduate School of Business |     have them, so there!  */