BSDForen.de  

Zurück   BSDForen.de > Geekstuff > Programmieren

Antwort
 
Themen-Optionen Thema bewerten Ansicht
Alt 09.07.2012, 11:50   #1
Herakles
Profifragensteller
 
Benutzerbild von Herakles
 
Registrierungsdatum: Jun 2003
Ort: Emsdetten
Beiträge: 983
Herakles eine Nachricht über ICQ schicken
Question [C]Platzhalter in struct programmieren?

Moin!

Ich implementiere gerade eine Stuerung für einen Motor und in der Spezifikation des Motorprotokolls gibt es in einem Telegramm immer wieder Bytes, die ungenutzt sind.

Nun möchte ich gern ein struct aufbauen, dass die Struktur dieses Protokolls umfasst. Das sieht dann etwas so aus:

Code:
struct protokoll { uint8_t zaehler; uint8_t identifikation; uint8_t unbenutzt_1; uint8_t modus; uint8_t unbenutzt_2; (...) }
Nun kann ich das struct weiter so aufbauen, wie dort gesehen und bei allen ungenutzten Bytes ein "unbenutzt_X" schreiben - aber gibt es dafür eine passendere, elegantere Lösung? Ein "Platzhalter" im struct?

Vielen Dank für jede Idee,
Herakles
Herakles ist offline   Mit Zitat antworten
Alt 09.07.2012, 12:22   #2
dettus
Bicycle User
 
Benutzerbild von dettus
 
Registrierungsdatum: Aug 2004
Ort: nuernberg
Beiträge: 2.533
meistens heissen die dinger nicht "unbenutzt" sondern "rfu" oder so etwas.

aber ehrlich gesagt sieht es fuer mich so aus als ob "identifikation" und "modus" einfach 16 bit werte sind. little endian.
__________________
Computer science is not about using a computer. It is about unleashing its powers.
dettus ist offline   Mit Zitat antworten
Alt 09.07.2012, 15:14   #3
Crest
rm -rf /*
 
Registrierungsdatum: Jun 2008
Ort: Bremen
Beiträge: 1.079
Dir ist bekannt das man auch Arrays in in Structs einbetten kann oder?
Crest ist offline   Mit Zitat antworten
Alt 09.07.2012, 15:26   #4
Herakles
Profifragensteller
 
Benutzerbild von Herakles
 
Registrierungsdatum: Jun 2003
Ort: Emsdetten
Beiträge: 983
Herakles eine Nachricht über ICQ schicken
Klar ist mir das bekannt, nur wie Du siehst, sind das keine zusammenhängenden "Platzhalter"... Von daher passt an der Stelle nicht wirklich in Array. Die einzelnen Bytes möchte ich nicht gern in ein einziges Array packen, weil ich nicht via Index zugreifen möchte, sondern schon im struct mit Namen arbeiten will.

Naja...
Herakles ist offline   Mit Zitat antworten
Alt 09.07.2012, 16:26   #5
Crest
rm -rf /*
 
Registrierungsdatum: Jun 2008
Ort: Bremen
Beiträge: 1.079
Wenn du wirklich ungenutzte Felder in deinen Structs hast bleiben sie dennoch Elemente deines Structs und müssen deklariert werden. Außer hässlichen macros die __LINE__ und ## benutzen fällt mir da nix ein das weniger zu Tippen wäre.
Crest ist offline   Mit Zitat antworten
Alt 09.07.2012, 17:52   #6
Kamikaze
Parasprite
 
Benutzerbild von Kamikaze
 
Registrierungsdatum: May 2005
Ort: /Earth/Europe/Germany/Karlsruhe
Beiträge: 9.636
Kamikaze eine Nachricht über ICQ schicken Kamikaze eine Nachricht über MSN schicken
Du kannst einfach nur den Typ Deklarieren, ohne einen Namen zu vergeben. Oder nenne die Dinger reserved_n.
__________________
[ bsdlogo 2.0 - Wiki - Ports - LibreOffice Pakete - PM schreiben - kamikaze@bsdforen.de ]
Disclaimer: My posts represent my perception. Errors and incompleteness are to be expected, I deny any responsibility to know everything.
Kamikaze ist offline   Mit Zitat antworten
Alt 09.07.2012, 19:34   #7
Tron
Registered User
 
Registrierungsdatum: Apr 2004
Beiträge: 267
Zitat:
Zitat von Kamikaze Beitrag anzeigen
Du kannst einfach nur den Typ Deklarieren, ohne einen Namen zu vergeben.
Nein, das funktioniert nicht. Ich vermute, du verwechselst das mit anonymen Bitfeldern.
Tron ist offline   Mit Zitat antworten
Alt 10.07.2012, 13:45   #8
Crest
rm -rf /*
 
Registrierungsdatum: Jun 2008
Ort: Bremen
Beiträge: 1.079
Code:
#define DUMMY(n) uint8_t dummy_##__LINE__[n]
Und jetzt muss ich mal eben kotzen gehen.
Crest ist offline   Mit Zitat antworten
Alt 10.07.2012, 15:08   #9
Yamagi
Possessed With Psi Powers
 
Benutzerbild von Yamagi
 
Registrierungsdatum: Apr 2004
Ort: Schleswig-Holstein
Beiträge: 6.556
Yamagi eine Nachricht über ICQ schicken
Ich sollte dich schlagen.
__________________
Eure Tastatur verfügt nicht umsonst über zwei Shift-Tasten! Benutzt sie bitte, denn sonst ist es mir fast unmöglich euere Posts zu entziffern.

Yamagi ist gerade online   Mit Zitat antworten
Alt 10.07.2012, 16:40   #10
h^2
Moderators
 
Registrierungsdatum: Sep 2009
Beiträge: 871
Zitat:
Zitat von Herakles Beitrag anzeigen
Klar ist mir das bekannt, nur wie Du siehst, sind das keine zusammenhängenden "Platzhalter"... Von daher passt an der Stelle nicht wirklich in Array. Die einzelnen Bytes möchte ich nicht gern in ein einziges Array packen, weil ich nicht via Index zugreifen möchte, sondern schon im struct mit Namen arbeiten will.

Naja...
Du könntest ja trotzdem alles in ein Feld packen und einfach ein paar Pointer mit Namen anlegen. Verschwendet zwar Platz, aber das tust du durch das speichern von leeren Feldern sowieso. Dann wäre die Daten alle sequentiell abgelegt und du kannst das interface einfach erweitern.
__________________
meine ports · mein zuhause · mein blog
h^2 ist offline   Mit Zitat antworten
Alt 11.07.2012, 17:50   #11
Herakles
Profifragensteller
 
Benutzerbild von Herakles
 
Registrierungsdatum: Jun 2003
Ort: Emsdetten
Beiträge: 983
Herakles eine Nachricht über ICQ schicken
Also gut - meine Quintessenz aus diesem Thread ist: Es gibt keine eingehende, auf der Hand liegende Lösung, die das löst, was ich angedacht hatte. Im Grunde genommen wollte ich mich auch nur versichern, dass es nicht eine Möglichkeit gibt, die ich gerade übersehen hatte.

In dem Sinne ist also alles gut. Danke für Eure Tipps und Gedanken zum Thema!

Herakles
Herakles ist offline   Mit Zitat antworten
Alt 11.07.2012, 19:27   #12
carbuncle
Rainbow Six
 
Registrierungsdatum: Jul 2003
Ort: Bachman Road, Silent Hill
Beiträge: 496
carbuncle eine Nachricht über ICQ schicken
Cool

Zitat:
Zitat von Crest Beitrag anzeigen
Code:
#define DUMMY(n) uint8_t dummy_##__LINE__[n]
Und jetzt muss ich mal eben kotzen gehen.
Das ist ja auch eine geile Nummer!
__________________
Core2Quad Q6600@2.4GHz
8192 MB RAM
FreeBSD9.1-RC1/amd64 (PC-BSD)
carbuncle ist offline   Mit Zitat antworten
Alt 12.07.2012, 12:52   #13
Daemotron
Registered User
 
Benutzerbild von Daemotron
 
Registrierungsdatum: May 2007
Beiträge: 574
Zitat:
Zitat von Crest Beitrag anzeigen
Code:
#define DUMMY(n) uint8_t dummy_##__LINE__[n]
Und jetzt muss ich mal eben kotzen gehen.
Hast Du das aus dem Linux-Kernel, oder aus der glibc? *duck-und-renn*
__________________
Never argue with idiots. They’ll pull you down to their level and then beat you with experience.
echo "[q]sa[ln0=aln256%Pln256/snlbx]sb729901041524823122snlbxq"|dc
Daemotron ist offline   Mit Zitat antworten
Alt 12.07.2012, 12:59   #14
carbuncle
Rainbow Six
 
Registrierungsdatum: Jul 2003
Ort: Bachman Road, Silent Hill
Beiträge: 496
carbuncle eine Nachricht über ICQ schicken
Das hat er aus dem Pulseaudio Code
__________________
Core2Quad Q6600@2.4GHz
8192 MB RAM
FreeBSD9.1-RC1/amd64 (PC-BSD)
carbuncle ist offline   Mit Zitat antworten
Alt 12.07.2012, 13:06   #15
Crest
rm -rf /*
 
Registrierungsdatum: Jun 2008
Ort: Bremen
Beiträge: 1.079
Nein diese Perversion habe ich so noch nirgendwo gesehen. Allerdings habe ich nur sehr kleine Ausschnitte des Linuxkernels gelesen und in den PulseAudio Code musste ich zum glück noch nie einen Blick werfen. Ich habe gesehen das es Redundanz gibt in den Deklarationen diese in einem Marco versteckt. Um die Namen eindeutig zu halten habe ich noch __LINE__ benutzt und ## um die Tokens zu verketten. Dieses Gebilde fand ich allerdings so widerlich das ich es eigentlich nicht Posten wollte. Nun hörte Herakles nicht auf zu fragen also bekam er was er wollte.
Crest ist offline   Mit Zitat antworten
Antwort


Dieses Thema betrachten zurzeit 1 Personen. (0 registrierte Benutzer und 1 Gäste)
 
Themen-Optionen
Ansicht Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An
[IMG] Code ist An
HTML-Code ist Aus
Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
[C] static struct initialisieren Herakles Programmieren 9 18.11.2011 09:24
[AVR32 & C]Startadresse von struct weicht ab Herakles Programmieren 15 06.11.2011 10:05
Verstaendnissfrage bzgl. dynam. Speicherallozierung im Hinblik auf Kernelprogrammieru das.chaos Programmieren 3 15.10.2010 18:48
lint und Includes Kamikaze Programmieren 8 28.04.2008 20:14
neue Intel-Grafik-Chips und FreeBSD soul_rebel FreeBSD - Allgemein 19 23.01.2007 19:40


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:47 Uhr.


Powered by vBulletin (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.