[OT] C-Frage
Kai Windmöller
kai.windmoeller at gmx.de
Thu Feb 20 16:07:01 CET 2003
Jan-Benedict Glaw wrote:
>Hallo .*!
>
>---------------------------
>#include <stdio.h>
>#include <stdlib.h>
>#define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
>
>static unsigned char a[] = {
> "ASD"[1],
> "Hello"[3],
>
^ ist das Komma zuviel? (nur
eine dumme Idee)
>};
>
>int
>main(int argc, char *argv[])
>
>
>Packe ich a[] in eine Funktion (main() z.B.), dann wird das brav
>zugelassen (und der gcc optimiert auch netterweise "ASD" und "Hello"
>heraus). Um den Style einzuhalten (und die Daten nicht auf den Stack zu
>packen, das sind in der Realität nämlich 'nen paar Bytes mehr...) soll
>das Array aber gleich an den Anfang, und halt _nicht_ in eine Funktion
>hinein. Das Progrämmchen oben ist nur ein testcase - in Wirklichkeit
>werden die initializers von a[] durch Macros erzeugt (und sind viel
>länger), aber die Kurzfassung reicht da schon:-)
>
Wenn du die Zeichenketten generieren lässt, warum dann nicht noch ein
Script drüberlaufen lassen, was genau die Zeichen herausholt die du
brauchst?
static unsigned char a[] = {
'S',
'l'
};
statt
static unsigned char a[] = {
"ASD"[1],
"Hello"[3],
};
Wenn das nicht praktikabel ist, warum?
Gruß Kai
More information about the Linux
mailing list