Also egal wie ich es anstelle mein Compiler bringt immer wieder Fehler: typedef struct _ST_A1 { union { uint16 analog1; uint16 analog2; }un; uni16 Summe; } ST_A1 Diese Struktur möcht ich gerne einer Funktion übergeben: typedef struct _ST_A1main { union { uint16 analog1; uint16 analog2; }un; uni16 Summe; } ST_A1main Funktionsaufruf: copy((*void)&ST_A1); void copy(ST_A1_main* pst_A1main) { ST_A1main = pst_A1main; } Jedoch wird der Inhalt nicht kopiert? Besten Dank Hans
Was versuchst du mit 'copy((*void)&ST_A1);' zu kopieren? ST_A1 ist ein Typname und keine Variable, die irgendwo im Speicher existiert. Damit das funktioniert, musst du erst eine Variable vom Typ ST_A1 anlegen, die du dann kopieren kannst. Hier 'ST_A1main = pst_A1main;' schmeisst du wieder Typen und Variablen durcheinander, indem du eine Variable einem Typ zuweist
ich möchte den Inhalt von ST_A1 in ST_A1main kopieren "eigentlich"
Hans wrote: > ich habe ausserdem folgendes definiert > > ST_A1 *ST_A1; Du kannst keine Variable definieren, die genau so heißt wie ein Typ. > ...(*void)... Was soll das sein?
ich versteh nur Bahnhof kann mir jemand ein Beispiel machen? und dabei die Copy Funktion verwenden oder abändern? Würde mich freuen
Hans wrote: > ich versteh nur Bahnhof Dann wäre es wirklich angebracht, sich erstmal mit den Grundlagen zu beschäftigen. > kann mir jemand ein Beispiel machen? und dabei die Copy Funktion > verwenden oder abändern? Was soll das bringen? Wenn dir der Unterschied Typ<->Variable nicht klar ist, wirst du niemals gescheiten eigenen Code produzieren können.
Moin, 1. Bitte nutzt die Code-Umgebung für deinen Code, sieht echt besser aus. 2. Bitte kopiere deinen Quelltext und schreib ihn nicht (aus dem Kopf) ab. Da scheinen nämlich diverse Fehler in deiner Abschrift zu sein. 3. Wenn, dann müssen die Strukturen aus dem selben Typ erzeugt werden. Funktionieren würde es (vielleicht) auch so, ist aber schlechter Stil. 4. Deine copy-Funktion würde nichts kopieren, sondern auf dieselbe Struktur zeigen. Ist aber eventuell die bessere Variante, da das Kopieren glaube ich nur über die einzelnen Elemente funktionieren würde. 5. Eigene Definitionen mit '_' oder '__' (also einfach oder zweifach Unterstrich) solltest du lassen, dass gibt nur Probleme mit Standard-Libs und -Headern.
1 | typedef struct { |
2 | uint16_t Summe; |
3 | |
4 | union { |
5 | uint16_t analog1; |
6 | uint16_t analog2; |
7 | } un; |
8 | } ST__A1; |
1 | void copy( ST__A1 * ST_A1_cp1 , ST__A1 * ST_A1_cp2 ) |
2 | {
|
3 | ST_A1_cp2->Summe = ST_A1_cp1->Summe; |
4 | ST_A1_cp2->un.analog1 = ST_A1_cp1->un.analog1; |
5 | ST_A1_cp2->un.analog2 = ST_A1_cp1->un.analog1; |
6 | }
|
7 | |
8 | void copy_ptr( ST__A1 * ST_A1_cp1 , ST__A1 * ST_A1_cp2 ) |
9 | {
|
10 | *ST_A1_cp2 = *ST_A1_cp1; |
11 | }
|
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.