Habe leider keine Erfahrung im Compilerbau, mit Lex oder YACC, daher die
Frage, es geht um reines C (kein ++):
Ausgangslage: verschachtelte Strukturen, erstmal ohne Unions,
Bitstrutkuren, Floats. Reine ANSI-C-Basistypen, also (un)signed
(char|int|short|long) und z.B. gcc.
1 | #pragma pack 4
|
2 | typedef unsigned int tValue;
|
3 | typedef struct
|
4 | {
|
5 | unsigned char Status;
|
6 | tValue Value;
|
7 | }tSet;
|
8 |
|
9 | typedef struct
|
10 | {
|
11 | const char *name;
|
12 | tSet Set;
|
13 | }tMeasure;
|
14 |
|
15 | extern tMeasure Measure;
|
Measure hat aufgedröselt, bei 4 Byte für int und Zeiger, sowas wie:
4 Byte Measure.name
1 Byte Measure.Set.Status
3 Byte ... (frei)
4 Byte Measure.Set.Value.
Wie kommt man automatisiert an dieses "Layout" von Measure? Also Tear
Down bis zu den Basistypen?
a) Mit Lex und Yacc und viel Arbeit?
b) Measure in einem Dummy-C/C++-File instanziiert und ein Output-File
nach Assembler-Reservierungen parsen?
Die Typ-Verschachtelungen seine auf mehrere (h-)Files verteilt.
Auch ist es keine Option, die Struktur woanders zu beschreiben und
daraus den C-Code (und alles weitere) zu erzeugen. Auch sei Portabilität
hier kein Thema.
Gruß
achim