Sepp wrote:
> Hallo zusammen,
>
> zu dem Thema extern gibt es ja schon massig Einträge, aber leider bin
> ich immer noch am Rätselraten ud hab noch keine gültige Kombination
> "herausgefunden" :)
> Hier mein Problem:
>
> Ich habe eine Headerdatei in der ich ein Struct definiere:
>
1 | > //structdef.h
|
2 | > #ifndef _bla
|
3 | > #define _bla
|
4 | > typedef struct{
|
5 | > uint16_t tagnummer;
|
6 | > uint16_t a;
|
7 | > uint8_t v;
|
8 | > BYTE c;
|
9 | > BYTE d;
|
10 | > BYTE e;
|
11 | > BYTE *f;
|
12 | > };
|
>
> Dieses Struct will ich in einer Funktion anlegen und zwar so, dass ich
> nach Beendigen der Funktion wieder darauf zugreifen kann. Diese Funktion
> liegt zum Beispiel in Funktion.c
Dann gib der struct als erstes mal einen Namen, damit man sich
auch darauf beziehen kann.
Immer diese anonymen structs. Ich verstehe gar nicht, was daran so
schön sein soll.
Beachte auch:
Bis jetzt hast du nur die Dekleration einer Struct. Also den
Bauplan wie eine struct Variable aussehen wird. Du hast
noch keine Variable.
>
> Im HauptProg mache ich einen include auf Funktion.h welche die Funktion
> (Createstruct()) beinhaltet und bereits die structdef.h includiert hat.
>
> Ich führe als erstes Createstruct() aus und danch will ich auf die Var
> zugreiffen können.
> Das Problem ist noch, dass es sich dabei um ein Struct-Array handelt
> dessen Größe erst in dieser Createstruct() ermittelt wird.
>
> Wie (static, extern .... ??) muss ich die Var definieren und wo?
> Hab echt den Überblick verloren.
Ob Array oder nicht macht nur insofern einen Unterschied, als
die globale Variable dann ein Pointer sein muss
structdef.h
***********
1 | typedef struct _myStruct
|
2 | {
|
3 | ...
|
4 | } myStruct;
|
function.h
**********
1 | #include "structdef.h"
|
2 |
|
3 | void CreateStruct( int Size );
|
4 |
|
5 | extern myStruct* theArray;
|
function.c
**********
1 | #include "function.h"
|
2 |
|
3 | myStruct* theArray;
|
4 |
|
5 | void CreateStruct( int Size )
|
6 | {
|
7 | theArray = malloc( Size * sizeof( myStruct ) );
|
8 | }
|
main.c
******
1 | #include "function.h"
|
2 |
|
3 | int main()
|
4 | {
|
5 | CreateStruct( 5 );
|
6 |
|
7 | for( i = 0; i < 5; ++i )
|
8 | theArray[i].xxxyyy = ....
|
9 | }
|