Forum: PC-Programmierung Verschiedene Structs in einem Array packen


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Franz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi,
ich habe verschiedene strukturen.
AnalogOutput
DigitalOutput
PWMOutput

diese beinhalten unterschiedliche elemente.

Da aber alle in einem enum aufgelistet sind (nicht von mir, kann ich 
auch nicht ändern) würde ich gerne ein Array mit anzahl aller outputs 
(größe des enums) machen. Jetzt ist das Problem, dass die Inhalte der 
einzelnen elemente im Array unterschiedlich sein müssen. Das heiß, ich 
kann kein Array vom typ AnalogOutput machen, da sonst DigitalOutput und 
PWMOUtput nicht hineinpassen.

Gibt es eine möglichkeit, diese drei structs zusammenzuführen um es 
später beim Suchen einfacher zu haben?

Beim array habe ich mir gedacht, das Element im Enum ist gleichzeigit 
der Platz im array.

von A. S. (achs)


Bewertung
0 lesenswert
nicht lesenswert
Union

von Imonbln (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Verwirr uns nur nicht, indem Du uns unwichtige Details wie die 
Programmiersprache nennst. Es würde uns sicher nicht Helfen zu verstehen 
was Dein Problem ist.

Du hast ein Enum und 3 Strukturen, okay so weit verstanden. Die 
Strukturen sind unterschiedlich groß, das habe ich auch verstanden. Und 
dass Enum ist vorgeben, das ist auch angekommen, aber wie hängen jetzt 
Enum und Struktur zusammen?

Die Generische Antwort ist, Du musst die ein Memory Bereich besorgen der 
groß genug ist, die größte Struktur aufzunehmen und vielleicht auch noch 
etwas Header Overhead, dann kannst Du sicher diesen Speicher in die für 
Dich passende Struktur verwandeln. Die Details da zu sind abhängig von 
der Programmiersprache und den unwichtigen Zusammenhang zwischen enum 
und Strukturen, welche Du uns nicht genannt hast, vielleicht ist eine 
Union das, was Du suchst, oder ein serialisierer.

von Manfred S. (Firma: Manfred) (xfred343)


Bewertung
0 lesenswert
nicht lesenswert
Wie wärs mit einem 2D-Array: die erste Dimension für die Elemente, die 
zweite für die Komponenten. Also alle Komponenten der jeweiligen 
Datentypen und ein weiteres Element, das angibt ob es sich um 
AnalogInput, DigitalInput etc. handelt, das ist zwar etwas redundant (so 
ähnlich wie man in einer Datenbank mehrere Parent-Client Beziehungen in 
eine einzige Tabelle packt). Zwischen Index der jeweiligen Enum und dem 
2. Arrayindex kannst du so eine Art "Matcher/Übersetzungfunktion" 
Enum-Index zu Array-Index bauen..

: Bearbeitet durch User

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.

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