Daniel S. schrieb:
> Das funktioniert aber nur, wenn ich die Liste im gleichen c-file
> generiere in dem die Arrays definiert sind.
Lege einfach ein Header-File (oder auch mehrere davon) an, in dem die
Array deklariert sind, also bspw.
1 | extern struct x Array1[13];
|
2 | extern struct x Array2[47];
|
3 | ...
|
Diese Header-File wird insbesondere auch dort includet, wo Array2 und
Array2 definiert sind.
Wichtig ist, dass die Größer der Arrays (im Beispiel 13 bzw. 47) nicht
nur in der Definition, sondern auch in der extern-Deklaration steht,
sonst kann man den sizeof-Operator nicht auf die Arrays anwenden. Der
Compiler vergleicht die Deklarationen in den Header-Files mit den
Definitionen in deen .c-Files. Stimmt die Array-Größe (die bei dieser
Methode ja zweimal — also redundant — angegeben werden muss) nicht
überein, gibt's Mecker. Damit kannst du sicher sein, dass
immer dir richtige Größe liefert, egal ob im betreffenden Programmab-
schnitt nur die Deklaration oder auch die Definition des Arrays bekannt
ist.