mikrocontroller.net

Forum: PC-Programmierung Struktur einer Funktion übergeben


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tobi H. (tobi-) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich möchte den Inhalt von ST_A1 in ST_A1main kopieren "eigentlich"

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe ausserdem folgendes definiert

ST_A1  *ST_A1;

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich versteh nur Bahnhof

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

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: mono (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

typedef struct {
      uint16_t Summe;
      
      union {
         uint16_t analog1;
         uint16_t analog2;
      } un;
} ST__A1;
void copy( ST__A1 * ST_A1_cp1 , ST__A1 * ST_A1_cp2 )
{
  ST_A1_cp2->Summe = ST_A1_cp1->Summe;
  ST_A1_cp2->un.analog1 = ST_A1_cp1->un.analog1;
  ST_A1_cp2->un.analog2 = ST_A1_cp1->un.analog1;
}

void copy_ptr( ST__A1 * ST_A1_cp1 , ST__A1 * ST_A1_cp2 )
{
  *ST_A1_cp2 = *ST_A1_cp1;
}

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besten Dank Männer.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.