Guten Tag, ich habe zwei Strukturen mit unterschiedlichen Namen: struct tx { int x; int y; } test; strcut rx { int x; int y; } test; Will ich diese unabhängig von einander nutzen, meckert meine Compiler ! Wie kann das ? Die Variable test wird doch nur in Zusammenhang mit der richtigen Struktur aufgerufen!! test.rx = 3; test.tx = 4;
> Will ich diese unabhängig von einander nutzen, meckert meine Compiler ! > Wie kann das ? Könntest Du das "Meckern" auch noch beschreiben? Meine Glaskugel liegt gerade im Koma.
1 | struct tx |
2 | { int x; |
3 | int y; |
4 | } test; |
5 | |
6 | struct rx |
7 | { int x; |
8 | int y; |
9 | } test; |
10 | |
11 | int main(void) |
12 | {
|
13 | test.tx = 3; |
14 | test.rx = 4; |
15 | return 0; |
16 | }
|
1 | GNU C version 4.1.1 (WinARM) (arm-elf) |
2 | compiled by GNU C version 3.4.2 (mingw-special). |
3 | |
4 | struct.c:10: error: conflicting types for 'test' |
5 | struct.c:4: error: previous declaration of 'test' was here |
6 | struct.c: In function 'main': |
7 | struct.c:14: error: 'struct rx' has no member named 'tx' |
8 | struct.c:15: error: 'struct rx' has no member named 'rx' |
9 | struct.c:17:2: warning: no newline at end of file |
1/ Du darfst den Variablennamen test nicht zweimal vergeben. 2/ Du musst auch die einzelnen Elemente der jeweiligen Struktur ansprechen. Lauffähig ist z.B.
1 | struct tx |
2 | { int x; |
3 | int y; |
4 | } test_tx; |
5 | |
6 | struct rx |
7 | { int x; |
8 | int y; |
9 | } test_rx; |
10 | |
11 | int main(void) |
12 | {
|
13 | test_tx.x = 3; |
14 | test_rx.y = 4; |
15 | return 0; |
16 | }
|
WOW !!! Besten Dank für die professionelle HILFE !!! Bin begeistert !! Mfg Maik
Allerdings - warum sollte das nicht gehen? Das sind doch eigentlich zwei Unterschiedliche Strukturen. Ich bin mir sicher das es geht, nur ich bin mir nicht so ganz sicher, wie es programmiert wird! Ich möchte test als Variabel für zwei Unterschiedliche Strukturen behalten! Vielleicht hat jemand noch ne andere Programmierung ??? test.rx = 3; test.tx = 4; Mfg Maik
unsigned int test; unsigned char test; test=1; test=0; Das funktioniert gnau so wenig. Du hast 2 UNTERSCHIEDLICHE Strukturen deklariert. Du kannst für 2 unterschiedliche Dinge nicht den gleichen Namen benutzen. Ganz einfach ;)
Zu einem Variablennamen gehört immer genau ein Typ. > test.rx = 3; > test.tx = 4; Das geht nicht. Du schreibst <Variablename>.<Strukturname> Die einzig zulässige Schreibweise in C ist in diesem Zusammenhang <Variablename>.<Selektorname> > Vielleicht hat jemand noch ne andere Programmierung ??? Was hast du denn ingesamt vor, wozu du diese Konstrukte brauchst? Vielleicht gibt es ja dafür ne andere Programmierung.
Und struct rx { int x; int y; } test; test.rx = 3; geht zusätzlich nochmal nicht. Die Zuweisung ist verkehrt, selbst wenn du nur eine Variable test anlegst. rx ist der Typname des structs, der hat in der Zuweisung nichts verloren. test.x = 3; wäre richtig. Oliver
1 | struct
|
2 | {
|
3 | int x; |
4 | int y; |
5 | } test_rx, test_tx; |
tuts auch. Ich glaube, Du hast bei der Deklaration von structs etwas gründlich missverstanden. Der Bezeichner, der hinter dem "struct" (vor der öffnenden Klammer) steht, ist optional und bezeichnet die struct an sich. Gibt man ihn an, dann kann man ihn bei weiteren Deklarationen verwenden, z.B.:
1 | struct foo |
2 | {
|
3 | int x; |
4 | int y; |
5 | } bar1; |
6 | |
7 | struct foo bar2, bar3; |
bar1, bar2 und bar3 sind jetzt alle identisch aufgebaute Strukturvariablen mit dem Aufbau von "foo". Die Variablennamen an sich stehen HINTER der schließenden Klammer. Ich hoffe, das macht es etwas klarer. Wenn man keine weiteren structs des selben Typs im weiteren Programmverlauf deklarieren will, dann kann man den Bezeichner foo weglassen:
1 | struct
|
2 | {
|
3 | int x; |
4 | int y; |
5 | } bar1, bar2, bar3; |
Der Zugriff auf die einzelnen Elemente geht dann z.B. mit
1 | bar1.x = bar3.y; |
Es ist ganz einfach so, daß man nicht zwei Variablen mit gleichem Namen haben kann. Von welchem Typ die beiden sind, spielt dabei überhaupt keine Rolle.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.