๐Ÿš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

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

#1746
From: Joachim Zobel
Date: Mon, 04 Mar 1996 12:52
33 lines
1959 bytes
admin@rzaix13.uni-hamburg.de (Bernd Eggink) wrote:

>Joachim Zobel (a2597420@athena.rrz.uni-koeln.de) wrote:

>[...]

>>  Ich habe bisher char * verwendet und ueberlege im Moment, fรผr den
>>  Uebergang eine Stringklasse einzufuehren, die nicht alloziiert,
>>  sondern nur die Lรคnge prueft, und ansonsten den im _ctor uebergebenen
>>  Speicher verwendet. So eine Art Wrapper fuer strncpy.

>Tu's nicht. Jedenfalls nicht, wenn der im ctor uebergebene Speicher
>ein Stringliteral "blabla..." sein kann, denn in ein solches sollte
>man keinesfalls hineinschreiben. Die Wirkung ist undefiniert. Es steht
>dem Compiler z.B. frei, solche Literale in einem schreibgeschuetzten
>Speicherbreich unterzubringen.

Danke. War mir noch nicht aufgefallen.

Scheint mir eine ziemliche Sauerei zu sein. Das ARM (2.5.4) sagt:

String literals are of type char[] and not const char[] for
compatibility with Classic C where early software took advantage of
literals beeing distinct and modifiable. 

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?

Joachim
 
"... ein Geschlecht erfinderischer Zwerge, die fuer alles gemietet werden 
koennen."                       - Bertolt Brecht - Das Leben des Gallilei
Technical Details
Message-ID: <4hfekb$lbn@news.rrz.uni-koeln.de>
Path: arc1-ca.pugleaf.net!RRZ.Uni-Koeln.DE!usenet
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>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!RRZ.Uni-Koeln.DE!usenet
From: a2597420@athena.rrz.uni-koeln.de (Joachim Zobel)
Newsgroups: de.comp.lang.c++
Subject: Argghh! String-Literals nicht const! (War:Vergleich 'strcmp()' ...)
Date: Mon, 04 Mar 1996 12:52:20 GMT
Organization: Regional Computing Center, University of Cologne
Message-ID: <4hfekb$lbn@news.rrz.uni-koeln.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>
NNTP-Posting-Host: annexr2-16.slip.uni-koeln.de
X-Newsreader: Forte Free Agent 1.0.82