🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: dnet.atari
Article #585

Re: Turbo-C 2.0 Borland

#585
From: Rainer Klute
Date: Thu, 15 Feb 1990 15:28
48 lines
2944 bytes
In article <1993@laura.UUCP> fiebelko@gandalf.irb.informatik.uni-dortmund.de (Dieter Fiebelkorn) writes:
>Aber Borland denkt nicht daran eine neue Option einzufuehren, mit der man
>zwischen 16-Bit Integern und 32-Bit Integern umschalten kann. Ich habe dies
>schon vor einiger Zeit in einem Brief angeregt und erst kuerzlich bei Borland
>deshalb angerufen. Die Frage auf meinen Wunsch: "Keiner darf sich darauf ver-
>lassen, wie gross int's in C sind. Wozu soll das gut sein ?"

Der gute Mann hat voellig recht. Programme, die davon ausgehen,
dass ein int laenger als 16 Bit sein kann, sind eben nicht
portabel. Fuer groessere ganzzahlige Werte gibt es schliesslich
long. M. E. wuerde die vorgeschlagene Option zum Umschalten
lediglich einen unsauberen Programmierstil beguenstigen.

Es gibt uebrigens noch eine ganze Reihe anderer Fallen, in die
der C-Programmierer tappen kann. Allzugern setzt man naemlich
unbewusst (!) spezifische Eigenschaften des eigenen
Rechners/Betriebssystems auch bei anderen voraus - und schon
programmiert man nicht mehr portable. Ein paar einfache
Beispiele:

- Ein int kann 32 Bit lang sein. Falsch! Siehe oben.

- Ein char hat immer einen positiven Wert. Falsch! Auf manchen
  Rechnern sind char's vorzeichenbehaftet. Abhilfe: unsigned
  char verwenden.

- Ein char ist 8 Bit breit. Falsch! Auf einer Cyber
  beispielsweise ist ein char 32 Bit breit. Abhilfe: sizeof
  (char) verwenden.

- Die Buchstaben 'a' bis 'z' liegen lueckenlos hintereinander.
  Falsch! Im EBCDIC-Zeichensatz liegen die Buchstaben nicht
  lueckenlos.

Es liessen sich noch eine Menge weiterer Beispiele anfuehren.
Ich hielte es nicht nicht sinnvoll, fuer jedes dieser Probleme
eine Compileroption o. ae. einzufuehren. Ein sauberer
Programmierstil, der die Probleme beruecksichtigt, waere eher
anzuraten.

PS.: Das von D. Fiebelkorn genannte Problem bei der Portierung
existierender Programme duerfte sich durch ein "#define int
long" loesen lassen.

  Dipl.-Inform. Rainer Klute      klute@heike.informatik.uni-dortmund.de
  Univ. Dortmund, IRB             klute@unido.uucp, klute@unido.bitnet
  Postfach 500500         |)|/    ...uunet!mcvax!unido!klute
D-4600 Dortmund 50        |\|\    Tel.: +49 231 755-4663
Technical Details
Message-ID: <1994@laura.UUCP>
Path: arc1-ca.pugleaf.net!gmdzi!unido!laura!klute@heike.informatik.uni-dortmund.de
References: <1993@laura.UUCP>

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII-7-bit
X-Google-Thread: 12bdcf,e671da0a06e98b2e
X-Google-Attributes: gid12bdcf,public
X-Google-ArrivalTime: 1990-02-15 16:01:27 PST
Path: arc1-ca.pugleaf.net!gmdzi!unido!laura!klute@heike.informatik.uni-dortmund.de
From: klute@heike.informatik.uni-dortmund.de (Rainer Klute)
Newsgroups: dnet.atari
Subject: Re: Turbo-C 2.0 Borland
Keywords: Turbo C 2.0 Borland
Message-ID: <1994@laura.UUCP>
Date: 15 Feb 90 15:28:16 GMT
References: <1993@laura.UUCP>
Sender: news@laura.UUCP
Reply-To: klute@heike.informatik.uni-dortmund.de (Rainer Klute)
Distribution: dnet
Organization: University of Dortmund, W-Germany
Lines: 48
Posted: Thu Feb 15 16:28:16 1990