As Klaus Herrmann wrote:
> > char *s = "Hello";
> >
> > Das ist eine Stringkonstante.
> warum?
Per Definition (des C-Standards).
> das ist doch ein pointer to char, kein const char*? Ich denke,
> den müsste ich schreiben können.
Nein. Daß der C-Compiler Dir das Ding überhaupt als non-const pointer
to char durchgehen läßt, ist schon fast ein Bug (und eigentlich nur
dafür da, weil man sonst eine große Menge schlampig geschriebener
C-Programme wohl neu schreiben müßte). Wenn Du Dir angewöhnst,
Zeiger, die auf konstante Strings zeigen, grundsätzlich als `const
char *' zu deklarieren, bist Du natürlich auf der sicheren Seite.
> > Die koennte der Compiler
> > im Textsegment ablegen, wenn er wollte - und das ist
> > Read-Only.
> hmm, merkwürdig, davon hab ich noch in keinem buch was gesehen.
Es ist aber in allen heutigen Unixen gängig. Nicht nur im von
Christian zitierten ELF-Format, das dafür gleich eine eigene section
im Objektfile parat hat, sondern auch früher schon, da wurden sie halt
nur im Textsegment abgelegt (wo vor allem der Programmcode steht).
Neben dem r/o-Status hat das gleich noch den Vorteil, daß alle
konstanten Zeichenketten zwischen mehreren gleichzeitig laufenden
Instanzen eines Programmes `shared' sind.
-- cheers, J"org joerg_wunsch@uriah.heep.sax.de -- http://www.sax.de/~joerg/ -- NIC: JW11-RIPE Never trust an operating system you don't have sources for. ;-) To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Fri 30 Jul 1999 - 09:19:25 CEST