Forum: PC-Programmierung Struktur einer Funktion übergeben


von Hans (Gast)


Lesenswert?

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

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

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

von Hans (Gast)


Lesenswert?

ich möchte den Inhalt von ST_A1 in ST_A1main kopieren "eigentlich"

von Hans (Gast)


Lesenswert?

ich habe ausserdem folgendes definiert

ST_A1  *ST_A1;

von Stefan E. (sternst)


Lesenswert?

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?

von Hans (Gast)


Lesenswert?

ich versteh nur Bahnhof

kann mir jemand ein Beispiel machen? und dabei die Copy Funktion 
verwenden oder abändern? Würde mich freuen

von Stefan E. (sternst)


Lesenswert?

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.

von mono (Gast)


Lesenswert?

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
}

von Hans (Gast)


Lesenswert?

Besten Dank Männer.

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.