home *** CD-ROM | disk | FTP | other *** search
- In article <1992Jun30.120623.8943@cs.tu-berlin.de>, Andreas M. Kirchwitz writes:
-
- > In <KlTgr*Ch3@kbsaar.saar.sub.org> fjrei@kbsaar.saar.sub.org (Franz-Josef Reichert) writes:
- >
- > > Strings initialisiert man in C gemeinhin _immer_ statisch.
- >
- > Ach ja? Ist mir neu...
-
- Initialisierung = VORbelegung von Speicherzellen mit bestimmten
- Inhalten.
-
- Statisch = i.S.v. Wertbestimmung _vor_ der Laufzeit.
-
- Mit "statischer Initialisierung" bezeichne ich demnach, dass bei
- allen Stringinitialisierungen der resultierende String-Inhalt bereits _vor_
- der Laufzeit festzustehen hat, das "immer" impliziert, dass es in 'C' nicht
- anders moeglich ist. Was einfach daran liegt, dass C i.d.R. compiliert, nicht
- interpretiert wird. Was ist daran unklar? Wie kann ich etwas "VORbelegen",
- wenn ich zum Zeitpunkt der VORbelegung noch gar nicht weiss, welche Werte
- das vorzubelegende Objekt erhalten soll? Das waere doch ein ganz klarer
- Widerspruch!
-
- > >Zur Laufzeit geht das nur mit strcpy() e.a..
- >
- > Mitnichten.
-
- Was Du meinst, ist "dynamisches Ausfuellen von Stringinhalten".
- In der Praxis laeuft dies aber immer auf ein (bestenfalls) inline-strcpy()
- hinaus, dessen Quelldaten in den meisten Faellen auch noch aus statischen
- Daten bedient werden. Sobald ich im C-Source irgendwas zwischen doppelte
- Anfuehrungszeichen setze, kann ich davon ausgehen, dass der Compiler daraus
- auch statische Daten erzeugt. Womit ich statische Daten gewinne, nicht
- aber vermeide. Der signifikante Unterschied zwischen (1)
-
- test1() {
- unsigned char string[] = "Laberfasel";
- }
-
- und (2)
-
- test2() {
- static unsigned char string[] = "Laberfasel";
- }
-
- ist nunmal, dass (2) _weniger_ Code erzeugen _muss_!
-
- > Mit Unverstaendnis... Andreas
-
- Ueber mangelhafte Effizienz des (dynamischen) Umkopierens (aus
- ihrer Definition heraus bereits) statischer Dateninhalte braucht aber nicht
- diskutiert zu werden? Oder etwa doch? :-)
-
- --
- Best regards,
- Franz-Josef Reichert GERMANY - VOICE: +49 6805 7417
- Kuchlingerstrasse 13 UUCP: fjrei@kbsaar.{saar|adsp}.sub.org
- 6601 Kleinblittersdorf fjrei@kbsaar.saar.de
-
-