Michael Ott <[EMAIL PROTECTED]> writes:
> Ich lese gerade mittels socket eine Struct, das sich nicht an die
> 32bit-Grenze nicht h�lt. 
> 
> Ich habe folgendes Strukt:
> struct {
>       char[10];
>       int;
> }
> und genau das bekomme ich �ber das Netz, nur das er mir wirklich 10bit
> und danach die Zahl bringt,

Nachdem andere Deine Alignment-Probleme anscheinend mittels gcc-pragmas
gel�st haben, noch ein Tip:

int ist ein g�nzlich untauglicher Typ, um Daten �ber Netzwerke
auszutauschen, nimm lieber gleich uint32_t und achte daran, stets mittels
htonl in Dein host-seitiges System zu wandeln. Sonst hast Du keine
Freude, wenn Du obigen Code unter MacOS X oder Linux/Sparc zum Laufen
bringst. Denn auch wenn es f�r �ber 99% der heute laufenden Systeme
stimmt, da� ein int 32bit hat und Zweierkomplement verwendet, gibt es
keine Garantie, da� das so bleibt und schon gar nicht war es immer so.

Der portable Weg, um das richtige Padding zu erzeugen, ist �brigens der,
alles als char-Arrays zu definieren und mittels einzelner Operationen in
int zu wandeln, sonst verabschiedet sich der Code mit dem von Dir
angestrebten Padding auf einigen Architekturen mittels SIGBUS. Die
Alternative zu handkodierten char-Arrays sind Bibliotheken wie XDR von
Sun.

Thomas Jahns
-- 
"Computers are good at following instructions,
 but not at reading your mind."
D. E. Knuth, The TeXbook, Addison-Wesley 1984, 1986, 1996, p. 9


-- 
Haeufig gestellte Fragen und Antworten (FAQ): 
http://www.de.debian.org/debian-user-german-FAQ/

Zum AUSTRAGEN schicken Sie eine Mail an [EMAIL PROTECTED]
mit dem Subject "unsubscribe". Probleme? Mail an [EMAIL PROTECTED] (engl)

Antwort per Email an