Hi,
ich brauche mal eine Idee, wie ich eine Größenberechnung in C anstelle.
Ich möchte soetwas wie eine Datensatzbeschreibung aus einer
verschachtelten c-Struktur ableiten.
Die C-Struktur ist generierter Code.
Nur mal so zur Veranschaulichung:
1 | typedef struct _foo
|
2 | {
|
3 | int i;
|
4 | int k;
|
5 | } foo;
|
6 |
|
7 | typedef struct _bar
|
8 | {
|
9 | int j;
|
10 | foo f;
|
11 | } bar;
|
12 |
|
13 |
|
14 | int main()
|
15 | {
|
16 | int g1=sizeof(bar::j); // ok in c++
|
17 | int g2=sizeof(bar::f.i); // ok in c++
|
18 | int o1= offsetof(bar,j ); // ok in c++
|
19 | int o2= offsetof(bar,f.i ); // ok in c++
|
20 | ...
|
Mir fehlt leider gerade die Idee wie man es in c machen könnte- Der ::
Operator fällt ja flach.
Wenn es geht, möchte ich auch keine Instanz der Struktur erzeugen und
mit char* cast Adressen bestimmen und damit rumrechnen.
Ach ja, Strukturdefinition komplett auf Metatypen ändern scheidet aus
und den Trick über den Null-Pointer kenne ich auch schon.
Ok, int's sind nun etwas langweilig, aber schon bei char wird's wegen
des Alignments spannend.
Gruß,
Michi