Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Variablen < 1 byte?

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Tim_
Gast





BeitragVerfasst am: 08. Feb 2006 10:11   Titel: Variablen < 1 byte?

Hallo zusammen!

Eigentlich hatte ich nach dem Lesen einiger C-Bücher den Eindruck, die kleinste 'Einheit' in C wäre char mit einer Länge von einem Byte (auf Standard-Systemen). Zumindest bei C99.
Jetzt habe ich aber festgestellt, das beispielsweise das struct iphdr aus ip.h die beiden ersten 4bit Felder des IP-Headers per
Code:
unsigned int ihl:4;
unsigned int version:4;

anspricht.
Umgekehrt wird aber das 3bit Flags-Feld vernachlässigt und stattdessen zusammen mit dem Fragment Offset zu 16bit zusammengefasst.

Ist es jetzt möglich Variablen < 8bit zu erstellen/benutzen, man kann aber nur jeweils 8bit aufteilen, also 4bit gefolgt von 4, 3 von 5... aber nicht 3bit gefolgt von 13bit?

Vielleicht weiss ja auch jemand wo ich dazu genauere Infos bekommen könnte, hab bisher leider nichts gefunden.

Vielen Dank
Tim
 

hjb
Pro-Linux


Anmeldungsdatum: 15.08.1999
Beiträge: 3236
Wohnort: Bruchsal

BeitragVerfasst am: 08. Feb 2006 11:55   Titel:

Hi!

Generell kann man nur Bytes oder längere Wörter in Bitfelder aufteilen. Ob diese Syntax inzwischen zu Standard-C gehört (C99 vielleicht), ist mir nicht bekannt. Ältere Compiler unterstützen das wohl nicht, da muß man sich mit Bitmasken und Shift behelfen.

Es gibt auch Compiler, die Bit-Variablen explizit unterstützen. Das ist aber immer eine proprietäre Erweiterung und wird vor allem im Microocontroller-Bereich verwendet, besonders dann, wenn der Prozessor über entsprechende Befehle verfügt.

Gruß,
hjb
_________________
Pro-Linux - warum durch Fenster steigen, wenn es eine Tür gibt?
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger

Ponto
Gast





BeitragVerfasst am: 05. März 2006 21:45   Titel: Re: Variablen < 1 byte?

Tim_ hat folgendes geschrieben::

Ist es jetzt möglich Variablen < 8bit zu erstellen/benutzen, man kann aber nur jeweils 8bit aufteilen, also 4bit gefolgt von 4, 3 von 5... aber nicht 3bit gefolgt von 13bit?


Sowas ist nur innerhalb von structs möglich. Nicht für andere Variablen.
 

Janka



Anmeldungsdatum: 11.02.2006
Beiträge: 3569

BeitragVerfasst am: 05. März 2006 22:29   Titel:

Vor allem muss man beachten, dass Bitfelder bei manchen Compilern "optimiert", also wieder auf Bytegröße auseinandergezogen werden. Wenn man z.B. eigene struct-Element so abbilden will, muss man das "packed"-Keyword für die struct benutzen.

Janka
 
Benutzer-Profile anzeigen Private Nachricht senden

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy