Rozumiem, że atrybut align
ma postać użycia few different.Zamieszanie dotyczące atrybutu "wyrównaj"
W mojej pierwszej próbie, używałem go w następujący sposób:
align(1)
private struct TGAHeader
{
ubyte idLenght;
ubyte hasColormap;
ubyte imageType;
ushort cmFirstEntry;
ushort cmLength;
ubyte cmSize;
ushort xOrigin;
ushort yOrigin;
ushort width;
ushort height;
ubyte pixelDepth;
ubyte imageDescriptor;
}
// TGAHeader.sizeof == 20
w wyniku których struktury są wyściełane z 2 dodatkowych niechcianych bajtów.
Po wymianie go na adres:
private struct TGAHeader
{
align(1):
ubyte idLenght;
ubyte hasColormap;
ubyte imageType;
ushort cmFirstEntry;
ushort cmLength;
ubyte cmSize;
ushort xOrigin;
ushort yOrigin;
ushort width;
ushort height;
ubyte pixelDepth;
ubyte imageDescriptor;
}
// TGAHeader.sizeof == 18
mam oczekiwanych 18 bajtów dla rozmiaru nagłówka.
Tak więc mam wątpliwości: jaki jest faktyczny użytek z pierwszej formy atrybutu align
, jeśli nie wydaje się, aby dane były wyrównane, jak można by oczekiwać?