Cosa fa effettivamente la seguente affermazione e quali sono i suoi effetti?C++ #pragma pack
#pragma pack(push,8)
Cosa fa effettivamente la seguente affermazione e quali sono i suoi effetti?C++ #pragma pack
#pragma pack(push,8)
Spinge l'impostazione corrente pack
in uno stack (in modo da poter ripristinare in seguito tramite pop
) e quindi imposta l'allineamento di elementi struct a 8 byte. Tutto ciò che non è naturalmente allineato a un limite di 8 byte avrà i byte di riempimento inseriti prima di mantenere l'allineamento richiesto.
Solo un'aggiunta per come vedere gli effetti: definire una struttura con alcuni elementi di dimensioni diverse (ad es. char', 'short',' long', 'double'). Quindi determinare la dimensione della struttura usando 'sizeof'. Metti una coppia di #pragma pack (push, n) 'e' #pragma pack (pop) 'attorno alla struttura con valori diversi per' n' (ad es. 1, 2, 4, 8). Guarda come cambiano i risultati di 'sizeof'. Come opzione, controlla la modifica dell'indirizzamento relativo degli elementi della struttura. – Flinsch
http://msdn.microsoft.com/en-us/library/2e70t5y1(VS.80).aspx –