Article View: dnet.atari
Article #585Re: Turbo-C 2.0 Borland
From: Rainer Klute
Date: Thu, 15 Feb 1990 15:28
Date: Thu, 15 Feb 1990 15:28
48 lines
2944 bytes
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.deReferences:
<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