Forum: Compiler & IDEs Problem mit cross-reference


von Simon K. (simon) Benutzerseite


Lesenswert?

Hallo,
Das Problem, was ich habe ist, dass zwei Strukturen jeweils Zeiger auf 
die jeweils andere Struktur haben:
1
struct tStruct1
2
{
3
    struct tStruct2* pStruct2;
4
};
5
6
struct tStruct2
7
{
8
    struct tStruct1* pStruct1;
9
};

Alles kein Problem, WENN man vor die Deklaration von tStruct1 folgendes 
voranstellt:
1
struct tStruct2;

Mein Problem ist aber, dass ich anynome Structs im Zusammenhang mit 
Typedefs benutze (Ist hiervon eigentlich abzuraten aus irgendwelchen 
Gründen?)
1
typedef struct
2
{
3
    tStruct2* pStruct2;
4
}tStruct1;
5
6
typedef struct
7
{
8
    tStruct1* pStruct1;
9
}tStruct2;

Was stelle ich jetzt voran?
1
typedef struct tStruct2;
funktioniert jedenfalls nicht:
warning: useless storage class specifier in empty declaration
1
typedef tStruct2;
auch nicht. Redefinition wg. Default int.

von Roland R. (roland) Benutzerseite


Lesenswert?

Hallo Simon,

Du musst in diesem Fall den Structs selbst auch Namen geben, anders 
gehts nicht:
1
struct tStruct2_tag;
2
3
typedef struct tStruct1_tag
4
{
5
    struct tStruct2_tag* pStruct2;
6
} tStruct1;
7
8
typedef struct tStruct2_tag
9
{
10
    struct tStruct1_tag* pStruct1;
11
} tStruct2;

bzw. auch:
1
struct tStruct2_tag;
2
3
struct tStruct1_tag
4
{
5
    struct tStruct2_tag* pStruct2;
6
};
7
8
struct tStruct2_tag
9
{
10
    struct tStruct1_tag* pStruct1;
11
};
12
13
typedef struct tStruct1_tag tStruct1;
14
typedef struct tStruct2_tag tStruct2;

Gruß,
Roland

von Simon K. (simon) Benutzerseite


Lesenswert?

Ok. Habe ich mir gedacht. Ich denke gerade darüber nach der Konsistenz 
halber das mit den "typedef struct"s zu vergessen und stattdessen 
einfach bei Definitionen jedesmal struct davorzuschreiben.

Danke für die Antwort ;)

von Roland R. (roland) Benutzerseite


Lesenswert?

Hallo nochmal,

Genau meine Meinung. Bei structs und enums verwende ich auch keine 
typedefs, ist mir einfach zu blöd. Und die sechs Buchstaben extra (inkl. 
Leerzeichen) tun auch nicht weh, die tippt man blind.

Gruß,
Roland

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.