Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ
1
2
3
4
5
6
7
8
9
| typedef struct TA{
int data;
TB *b;
};
typedef struct TB{
{
TA* a;
}; |
Zo?
PS: Mn C is een beetje roestig...
We adore chaos because we like to restore order - M.C. Escher
dus zo:
1
2
3
4
| typedef struct MyStruct
{
int data;
}; |
Als je nu wil dat een type van struct B in member is in A, dan moet je eerst B 'voordefinieren':
1
2
3
4
5
6
7
8
9
10
11
12
| typedef struct B;
typedef struct A
{
int data;
B* ptrB;
}
typedef struct B
{
A* a;
} |
https://fgheysels.github.io/
1
2
3
4
5
6
7
8
9
10
11
| struct B; struct A { struct B* ptrB; }; struct B { struct A* a; }; |
Of als je je types toch wilt definieren als types:
1
2
3
4
5
6
7
8
9
10
11
| struct B; typedef struct A { struct B* ptrB; } A; typedef struct B { A* a; } B; |
Maar dit vind ik zelf minder mooi, omdat je nu 'struct B' in A's definitie moet zetten, maar niet 'struct A' in de definitie van B.
1
2
3
4
| typedef struct MyStruct { int data; }; |
Dit kan dus niet in C. Je moet ofwel de naam van je type specificeren, ofwel de typedefinitie weglaten en uitsluitend de struct definieren. Met "struct X { }" definieer je een structure met identifier X; met "typedef struct { } Y;" definieer je een anonieme structure en een bijbehorend type Y; met "typedef struct X { } Y;" combineer je beiden en definieer je dus een structure X en een bijbehorend type Y.
Soultaker schreef op 07 november 2002 @ 20:06:
Even voor de duidelijkheid; ik zie zowel whoami als LordLarry de volgende code plaatsen:
C:
1 2 3 4 typedef struct MyStruct { int data; };
Dit kan dus niet in C. Je moet ofwel de naam van je type specificeren, ofwel de typedefinitie weglaten en uitsluitend de struct definieren. Met "struct X { }" definieer je een structure met identifier X; met "typedef struct { } Y;" definieer je een anonieme structure en een bijbehorend type Y; met "typedef struct X { } Y;" combineer je beiden en definieer je dus een structure X en een bijbehorend type Y.
Nouja, kan zijn. Ik heb geen ervaring met C.
https://fgheysels.github.io/
Nobody's perfect.whoami schreef op 07 november 2002 @ 20:12:
Nouja, kan zijn. Ik heb geen ervaring met C.
Kan best, ik zei nog dat mn C een beetje roestig wasSoultaker schreef op 07 november 2002 @ 20:06:
Even voor de duidelijkheid; ik zie zowel whoami als LordLarry de volgende code plaatsen:
C:
1 2 3 4 typedef struct MyStruct { int data; };
Dit kan dus niet in C. Je moet ofwel de naam van je type specificeren, ofwel de typedefinitie weglaten en uitsluitend de struct definieren. Met "struct X { }" definieer je een structure met identifier X; met "typedef struct { } Y;" definieer je een anonieme structure en een bijbehorend type Y; met "typedef struct X { } Y;" combineer je beiden en definieer je dus een structure X en een bijbehorend type Y.
We adore chaos because we like to restore order - M.C. Escher
* im_ik pinkt een traantje weg van geluk, dit werktSoultaker schreef op 07 november 2002 @ 20:03:
Of als je je types toch wilt definieren als types:
C:
1 2 3 4 5 6 7 8 9 10 11 struct B; typedef struct A { struct B* ptrB; } A; typedef struct B { A* a; } B;
Maar dit vind ik zelf minder mooi, omdat je nu 'struct B' in A's definitie moet zetten, maar niet 'struct A' in de definitie van B.
Het is idd niet de mooiste oplossing....Maar dat komt later nog wel een keer..
Als ik wat meer C ervaring heb..
Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ
1
2
3
4
5
6
7
8
9
10
11
12
13
| struct SB;
typedef struct SA
{
SB* b;
int getal;
}A;
typedef struct SB
{
SA* a;
int getal;
}B; |
Edit: oops sorryz, was ff vergeten dat het om C ging en niet c++
[ Voor 0% gewijzigd door Daspeed op 07-11-2002 20:32 . Reden: Foutje... ]
dus zo:
1
2
3
4
5
6
7
8
9
10
11
12
| typedef struct A A; typedef struct B B; struct A { B * ptrB; }; struct B { A * ptrA; }; |
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
DrClearbottom schreef op 07 november 2002 @ 20:26:
Als je dan toch zo graag allebei de structs soort van symetrisch wil hebben, waarom doe je dan niet dit:
code:
1 2 3 4 5 6 7 8 9 10 11 12 13struct SB; typedef struct SA { SB* b; int getal; }A; typedef struct SB { SA* a; int getal; }B;
dat werkt dus niet, dat heeft Soultaker hierboven al uitgelegd
als je SB wilt gebruiken dan zul je struct SB moeten schrijven (er is tenslotte nog geen type SB gedefinieerd). Dit is een verschil tussen C en C++
Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.
Kijk das handig om te weten...oisyn schreef op 07 november 2002 @ 20:28:
je kunt een typedef overigens ook toepassen op een incomplete type (in dit geval dus een struct waarvan de inhoud nog niet bekend is)
En het ziet er wat beter uit in de code
* im_ik leert elke dag weer wat..
Atari Terminator AI - LegoBlockX3 = ᒢᐩᐩ.ᒡᒢᑊᒻᒻᓫᔿ.ᣳᣝᐤᣜᣳ.ᐪᓫᣗᔿᑊᣕᣔᐪᐤᣗ.T008ᖟ