Struktur einer Funktion übergeben

Gast #979482
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
Persönliche Seite #979491
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
#979572
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.
Gast #979580
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
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren