[linux-l] Arrays in C (was: SuSE 9.3 und gshadow)
Steffen Dettmer
steffen at dett.de
Mi Nov 9 23:00:33 CET 2005
* Axel Weiß wrote on Sun, Nov 06, 2005 at 09:31 +0100:
> In C kannst Du String*konstanten* aneinanderhängen:
>
> "bla" "blurb" gibt zusammen "blablurb". Wirklich brauchen kann man sowas
> eigentlich nur in Makros, die Strings zusammensetzen.
Und in multi-line strings.
"ein mehrzeiliger
string"
ist ja deprecated, man schreibt besser:
"ein mehrzeiliger\n"
"string"
just BTW.
> Wenn ich z.B. den
> gcc voraussetze (nur der hat ein __FUNCTION__), sieht mein
> Standard-Ausgabemakro etwa so aus:
>
> #define DEBUG(fmt, args...) \
> fprintf(stderr, "%s: " fmt "\n", __FUNCTION__, ##args)
geht aber nicht, wenn ich schreibe:
/* akademisch beklopptes Beispiel ich weiss */
snprintf(fmt, "At %d (%%s)");
DEBUG(fmt, "Hier");
daher hier vielleicht lieber va_list, machen wir in der Firma jedenfalls
so (format string neu erzeugen), glaub ich.
> Der neue Formatstring wird jetzt zusammengesetzt und die Funktion, aus
> der das Makro aufgerufen wird, mit ausgegeben.
>
> Wie gesagt, das geht nur mit Konstanten. Sowas wie oldarray[7 to 10] gibt
> es in C schonmal gar nicht (wo soll das im Speicher liegen?).
wieso, memcpy(&newarray[0], &oldarry[7], 10-7) geht doch?
> > Vermute ich richtig, daß man dann doch nicht um for-Schleifen
> > herumkommt?
Klar: man kann auf while ausweichen lol
oki,
Steffen
--
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.
Mehr Informationen über die Mailingliste linux-l