Bitfiled in union casten



  • Hallo ich bin gerade dabei das Programm eines Kollegen weiter zu bearbeiten.
    Nun ist folgender Fall aufgetreten ich habe ein bitfiled mit 16 Werten. Nun soll auf Grund neuer Anforderungen nicht wie bisher die einzelnen Fehler überprüft werden.Sondern es sollen Masken über das bitfeld gelegt werden. Dazu müste ich aber erst mal das bitfiled in ein union casten oder? Geht das überhaupt und wenn ja wie?

    Besten Dank schon mal.



  • Casten wieso casten.
    Definiere die union und fertig.



  • Ich kann die das biltfeld und die dazu gehörige Struktur nicht verändern.Da diess von einem 2 Module vorgegeben sind welches nicht mehr geändert werden kann.Ich muss daher für das Module welches ich gerade implementiere einen Weg finden um auf denn gesammt Wert des bitfelds zugreifen zu können.



  • Wenn du die Größe des Bitfeldes ( sizeof() ) kennst, kannst du doch einen entsprechenden Integertyp nehmen.
    Zur Not auch über Zeiger.



  • Du sollst ja auch nicht die originale (bitfeld)-Struktur verändern, nehme sie unverändert als Teil deiner (neuen) union auf und versuche, auf diese Art und Weise umzuwandeln.
    unions sind hierfür hervorragend geeignet und auch weniger fehleranfällig, da hierbei teilweise noch der Compiler die Hand drauf hat im Gegensatz zu irgendwelchem Rumgecaste, wo der Compiler nichts mehr prüfen kann.



  • Wie könnte ich das über einen Zeiger realisieren?


  • Mod

    denisd80 schrieb:

    Wie könnte ich das über einen Zeiger realisieren?

    Du nimmst einen Zeiger auf dein bitfeld und sagst dass dies nun ein Zeiger auf etwas anderes sein soll. Das sit aber unnötig umstandlich, mach's lieber so wie Wutz sagt.

    (Ist das in C eigentlich erlaubt mit den unions? In C++ ist das undefiniertes Verhalten)



  • sorry kann mir gerade nicht vorstellen wie ich das realisieren soll?



  • Schreib deine Struktur mal hin und den Zieltyp dazu.


Log in to reply