Capisco che l'attributo align
abbia una forma di utilizzo few different.Confusione relativa all'attributo "align"
Nel mio primo tentativo, stavo usando come segue:
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
che ha provocato la struct essere imbottita con 2 byte in più indesiderati.
Dopo aver cambiato a:
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
ho ottenuto le previste 18 byte per la dimensione di intestazione.
Quindi il mio dubbio è: qual è l'uso effettivo della prima forma dell'attributo align
se non sembra allineare i dati come ci si aspetterebbe?