Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Structin koko 2 tavua liian iso

Lahha [15.04.2008 18:04:10]

#

Pienen tauon jälkeen avasin taas Visual C++:n ja aattelin kirjoittaa .bmp tiedostaja kirjoittavan testi ohjelmani valmiiksi.

Mutta kääntäjän mielestä tämän structin koko on 16 tavua vaikka sen pitäisi olla 14.

struct BITMAPFILEHEADER
{
	unsigned __int16 bfType;
	unsigned __int32 bfSize;
	unsigned __int16 bfReserved1;
	unsigned __int16 bfReserved2;
	unsigned __int32 bfOffBits;
};

Metabolix [15.04.2008 18:08:14]

#

Tutustupa aiheeseen data structure alignment. Artikkelista löytyy myös monilla kääntäjillä toimiva ratkaisu:

#pragma pack(push)  /* tallennetaan vanha asetus */
#pragma pack(1)     /* käsketään olla asettelematta (asetella tavun välein) */

struct x {...};

#pragma pack(pop)   /* palautetaan vanha asetus */

Hassua, jos tuota ei jo automaattisesti ole siinä otsikossa (windows.h/wingdi.h), joissa tuo rakenne määritellään.

Lahha [15.04.2008 18:16:24]

#

Kiitti! Nyt toimii.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta