liquid
2003-08-17, 21:03:26
Hi Leute,
folgender Code:
struct BMPFileHeader
{
ushort type; // identifies the bmp-file (always 19778 ("BM"))
ulong size; // total file-size in bytes
ulong reserved; // 4 bytes padding (should be 0)
ulong offBits; // offset to the image data (from file start)
ushort padding; // 2 bytes padding
};
funktioniert aufgrund des 32-bit Alignment meines Compilers (GCC-3.2) nicht richtig.
Ich bin jetzt schon soweit, dass ich rausgefunden habe, dass es nach type noch 2 Bytes padding einschiebt und danach erst size kommt.
Das soll er allerdings nicht machen, sonst funzt das ganze nämlich überhaupt nicht.
Also Compiler klar machen, dass er die Struktur nicht alignen soll (extern ist sie ja aligned -> sollten 16 Bytes sein).
So, Standardalignment ist ja 32-bit (4 Bytes). Ich denke das beste wäre das auf 16 Bits zu reduzieren.
#pragma pack (push, 2)
und
#pragma pack (pop)
eingefügt, aber es tut sich nichts. Der Fehler ist immer noch da. Was tun Leute? Funzen die pragmas beim GCC vielleicht nicht und wenn dem so ist, was soll man dann machen??
cya
liquid
folgender Code:
struct BMPFileHeader
{
ushort type; // identifies the bmp-file (always 19778 ("BM"))
ulong size; // total file-size in bytes
ulong reserved; // 4 bytes padding (should be 0)
ulong offBits; // offset to the image data (from file start)
ushort padding; // 2 bytes padding
};
funktioniert aufgrund des 32-bit Alignment meines Compilers (GCC-3.2) nicht richtig.
Ich bin jetzt schon soweit, dass ich rausgefunden habe, dass es nach type noch 2 Bytes padding einschiebt und danach erst size kommt.
Das soll er allerdings nicht machen, sonst funzt das ganze nämlich überhaupt nicht.
Also Compiler klar machen, dass er die Struktur nicht alignen soll (extern ist sie ja aligned -> sollten 16 Bytes sein).
So, Standardalignment ist ja 32-bit (4 Bytes). Ich denke das beste wäre das auf 16 Bits zu reduzieren.
#pragma pack (push, 2)
und
#pragma pack (pop)
eingefügt, aber es tut sich nichts. Der Fehler ist immer noch da. Was tun Leute? Funzen die pragmas beim GCC vielleicht nicht und wenn dem so ist, was soll man dann machen??
cya
liquid