Datentypen / structs spinnen !?

Maxsoft

Mitglied
Hallo!

Ich habe ein kleines Problem mit einem struct.

Der TgxHeader stimmt soweit (8 Byte), jedoch beim BmpHeader wird mir immer mit sizeof() eine falsche Größe geliefert. (16 statt 14).

Eigentlich sollte 1x short(2Byte) + 3x int(4Byte) ja 14 ergeben !? :eek:

Getestet wurde folgender Code sowohl mit dem Visual C++ 2010 unter Windows 7 als auch dem GCC 4.5.2 unter Ubuntu (32 Bit).

Code:
#include <stdio.h>

typedef struct __bmpHeader{
	short bfType;
	int bfSize;
	int bfReserved;
	int bfOffBits;
}BmpHeader;

typedef struct __tgxHeader {
	short width;
	short nothing1;
	short height;
	short nothing2;
}TgxHeader;

int main(void){

	printf("sizeof(short): %d, sizeof(int): %d\n", sizeof(short), sizeof(int));
	printf("sizeof(BmpHeader): %d\n", sizeof(BmpHeader));
	printf("sizeof(TgxHeader): %d\n", sizeof(TgxHeader));

        return 0;
}

Die Ausgabe:

Code:
sizeof(short): 2, sizeof(int): 4
sizeof(BmpHeader): 16
sizeof(TgxHeader): 8

Ich hoffe jemand von euch Profis kann mir helfen Oo
Danke im vorhinein.
 
Nach langem fehlersuchen bin ich dann auf

Code:
#pragma pack(1)

gestoßen. Anscheinen versucht der Compiler hier zu optimieren, was er nicht soll !?

Naja, jetzt gehts
 
Zurück