Pro-Linux

Pro-Linux Diskussions- und Hilfeforum
Aktuelle Zeit: 14. Nov 2018 8:58

Alle Zeiten sind UTC+01:00




Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Variablen < 1 byte?
BeitragVerfasst: 08. Feb 2006 10:11 
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&#58;4;
unsigned int version&#58;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


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 08. Feb 2006 11:55 
Offline
Pro-Linux
Benutzeravatar

Registriert: 15. Aug 1999 16:59
Beiträge: 3236
Wohnort: Bruchsal
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?


Nach oben
   
 Betreff des Beitrags: Re: Variablen < 1 byte?
BeitragVerfasst: 05. Mär 2006 21:45 
Zitat:
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.


Nach oben
   
 Betreff des Beitrags:
BeitragVerfasst: 05. Mär 2006 22:29 
Offline
Benutzeravatar

Registriert: 11. Feb 2006 19:10
Beiträge: 3569
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


Nach oben
   
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen  Auf das Thema antworten  [ 4 Beiträge ] 

Alle Zeiten sind UTC+01:00


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.
Sie dürfen keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Limited
Deutsche Übersetzung durch phpBB.de