[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