PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : structs und sizeof


Tilion
26.06.2002, 12:38
also ich hab hier ein kleines problem mit structs, was mich langsam immer mehr nervt.
ein beispiel: mein struct besteht aus einem unsigned short und einem char. theoretisch 3 bytes, praktisch 4... und das stört mich.
beim auslesen einer datei, will ich ein array dieser structs füllen. das problem ist: weil es praktisch 4 bytes sind, überspringt er dann ein byte und das auslesen des files verschiebt sich -> falsche daten.

gelesen wird z.b. in der art:
maptile data[64]; // maptile ist das oben genannte struct.
fread( data, 3, 64, mul ); // mul ist das FILE *

außerdem wärs nett, wenn mir noch jemand kurz begründen würde, welche klasse er zum auslesen von datein benutzt :D ich hab bis jetz meist FILE benutzt, aber gibt ja z.b. auf den fstream


Felix Kaiser
26.06.2002, 14:58
Solch ein Problem hatte ich einst mit Delphi, Problem ist: Der Compiler richtet die Offsets in der Struktur nach bestimmten Werten aus, um den Zugriff zu beschleunigen, so wird z.B. die Größe der Struktur meist auf volle 4-Bytewerte gerundet und entsprechend die Offsets verschoben. In Delphi hat man dafür eine zusätzliche Direktive eingeführt 'packed', womit dies verhindert wird. In C/C++ lässt sich dies mit #pragma pack glaube beeinflussen, schlag mal nach und probiers mal.

Tilion
26.06.2002, 16:05
danke problem beseitigt :)