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; };
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.
Kiitti! Nyt toimii.
Aihe on jo aika vanha, joten et voi enää vastata siihen.