home *** CD-ROM | disk | FTP | other *** search
/ back2roots/padua / padua.7z / padua / text / TagItems / text0003.txt < prev    next >
Encoding:
Text File  |  2014-05-19  |  2.0 KB  |  59 lines

  1. In article <1992Jun30.120623.8943@cs.tu-berlin.de>, Andreas M. Kirchwitz writes:
  2.  
  3. > In <KlTgr*Ch3@kbsaar.saar.sub.org> fjrei@kbsaar.saar.sub.org (Franz-Josef Reichert) writes:
  4. >
  5. > >    Strings initialisiert man in C gemeinhin _immer_ statisch.
  6. >
  7. > Ach ja?  Ist mir neu...
  8.  
  9.     Initialisierung = VORbelegung von Speicherzellen mit bestimmten
  10.         Inhalten.
  11.         
  12.     Statisch = i.S.v. Wertbestimmung _vor_ der Laufzeit.    
  13.  
  14.     Mit "statischer Initialisierung" bezeichne ich demnach, dass bei
  15. allen Stringinitialisierungen der resultierende String-Inhalt bereits _vor_
  16. der Laufzeit festzustehen hat, das "immer" impliziert, dass es in 'C' nicht
  17. anders moeglich ist. Was einfach daran liegt, dass C i.d.R. compiliert, nicht
  18. interpretiert wird. Was ist daran unklar? Wie kann ich etwas "VORbelegen",
  19. wenn ich zum Zeitpunkt der VORbelegung noch gar nicht weiss, welche Werte
  20. das vorzubelegende Objekt erhalten soll? Das waere doch ein ganz klarer
  21. Widerspruch!
  22.  
  23. > >Zur Laufzeit geht das nur mit strcpy() e.a..
  24. >
  25. > Mitnichten.
  26.  
  27.     Was Du meinst, ist "dynamisches Ausfuellen von Stringinhalten".
  28. In der Praxis laeuft dies aber immer auf ein (bestenfalls) inline-strcpy()
  29. hinaus, dessen Quelldaten in den meisten Faellen auch noch aus statischen
  30. Daten bedient werden. Sobald ich im C-Source irgendwas zwischen doppelte
  31. Anfuehrungszeichen setze, kann ich davon ausgehen, dass der Compiler daraus
  32. auch statische Daten erzeugt. Womit ich statische Daten gewinne, nicht
  33. aber vermeide. Der signifikante Unterschied zwischen (1)
  34.  
  35.         test1() {
  36.             unsigned char string[] = "Laberfasel";
  37.         }
  38.  
  39.     und (2)
  40.     
  41.         test2() {
  42.             static unsigned char string[] = "Laberfasel";
  43.         }
  44.  
  45.     ist nunmal, dass (2) _weniger_ Code erzeugen _muss_!
  46.  
  47. >         Mit Unverstaendnis...  Andreas
  48.  
  49.     Ueber mangelhafte Effizienz des (dynamischen) Umkopierens (aus
  50. ihrer Definition heraus bereits) statischer Dateninhalte braucht aber nicht
  51. diskutiert zu werden? Oder etwa doch? :-)
  52.  
  53. --
  54. Best regards,
  55. Franz-Josef Reichert   GERMANY - VOICE: +49 6805 7417
  56. Kuchlingerstrasse 13   UUCP: fjrei@kbsaar.{saar|adsp}.sub.org
  57. 6601 Kleinblittersdorf        fjrei@kbsaar.saar.de
  58.  
  59.