Struktur einer Funktion übergeben

Gast #979482
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.