🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1753

Re: Argghh! String-Literals nicht const! (War:Vergleich 'strcmp()' ...)

#1753
From: Dietmar Kuehl
Date: Mon, 04 Mar 1996 22:52
40 lines
3048 bytes
Hi,
Joachim Zobel (a2597420@athena.rrz.uni-koeln.de) wrote:
: Das heisst: Man hat den Standard so gemacht, das alter Code zwar noch
: compiliert, aber undefiniertes Verhalten hat, anstatt den Compiler die
: entsprechenden Stellen anzeigen zu lassen. Was sollte das?

Nun, der Code kann sich an Stellen, wo man nach Standard "undefined
behavior" hat, wohldefiniert verhalten. Allerdings ist das nicht
portable und haengt von der Implementation ab. z.B. koennte ein
Compiler definieren: "String-Literale werden im Datensegement angelegt
und sind modifizierbar". Darauf kann man sich dann bei dem spezifischen
Compiler verlassen und z.B. alten Code compilieren. Ein anderer
Compiler kann allerdings definieren: "String-Literale werden im
Text-Segment angelegt und es gibt eine allgemeine Schutzverletzung,
wenn sie modifiziert werden". Beide Implementationen sind Standard
konform. Im uebrigen koennen Compiler natuerlich Warnings ausgeben,
wenn sie auf eine Stelle stossen, wo ein String-Literal einem 'char*'
anstatt einem 'char const *' zugewiesen wird. Fehler duerfen sie da
allerdings nicht ausspucken, zumindest dann nicht, wenn sie im ISO C++
konformen Modus laufen: Bei Compilern gibt es oft eine Option, mit der
man Erweiterungen/Einschraenkungen anschalten kann. Ich wuerde z.B. bei
einer Zuweisung eine String-Literals auf einen 'char*' einen Fehler
auswerfen lassen.  Aber ich habe da eh nochmehr Einschraenkungen. Die
passende Option wuerde vermutlich '-sucks' heissen und nur von Managern
zur Ueberpruefung ihrer Leute verwendet werden (... und natuerlich von
mir: Ich weiss, dass ich mich vor mir schuetzen muss!).

Leider sind non-const string literals kein 'deprecated feature'! D.h.
es wird auch in Zukunft nicht geaendert werden (da sind wohl doch
zuviele C-Hacker im Kommittee). Was das soll, weiss ich allerdigs
wirklich nicht mehr: Jemand der jetzt noch String-Literale aendert
gehoert eigentlich vom Programmieren ferngehalten (bestimmt gibt es
auch noch Leute, die davon ueberzeugt sind, dass es die EINZIG
moegliche und richtige Loesung fuer irgendein Problem ist, das in
Wirklichkeit viel besser portable geloest werden kann, dafuer
allerdings den Code 0.001% langsamer macht).
--
dietmar.kuehl@uni-konstanz.de
http://www.informatik.uni-konstanz.de/~kuehl
I am a realistic optimist - that's why I appear to be slightly pessimistic
Technical Details
Message-ID: <4hfs7p$d8r@news.BelWue.DE>
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
References: <4h2pg1$cto@news.BelWue.DE> <PDZ9BGIH@wuschel.ibb.schwaben.com> <4hass8$75o@news.rrz.uni-koeln.de> <4hehoi$21n@rzsun02.rrz.uni-hamburg.de> <4hfekb$lbn@news.rrz.uni-koeln.de>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!news.belwue.de!uzwil!kuehl
From: kuehl@uzwil.informatik.uni-konstanz.de (Dietmar Kuehl)
Newsgroups: de.comp.lang.c++
Subject: Re: Argghh! String-Literals nicht const! (War:Vergleich 'strcmp()' ...)
Date: 4 Mar 1996 22:52:41 GMT
Organization: Fakultät für Mathematik und Informatik
Message-ID: <4hfs7p$d8r@news.BelWue.DE>
References: <4h2pg1$cto@news.BelWue.DE> <PDZ9BGIH@wuschel.ibb.schwaben.com> <4hass8$75o@news.rrz.uni-koeln.de> <4hehoi$21n@rzsun02.rrz.uni-hamburg.de> <4hfekb$lbn@news.rrz.uni-koeln.de>
Reply-To: dietmar.kuehl@uni-konstanz.de
NNTP-Posting-Host: uzwil.informatik.uni-konstanz.de
X-Newsreader: TIN [version 1.2 PL2]