2010-10-25 10 views
8

¿Qué hace realmente la siguiente declaración y cuáles son sus efectos?C++ # paquete de pragma

#pragma pack(push,8) 
+0

http://msdn.microsoft.com/en-us/library/2e70t5y1(VS.80).aspx –

Respuesta

13

Empuja el ajuste actual pack en una pila (para que pueda restaurar más tarde a través de pop) y después se establece la alineación de los elementos struct a 8 bytes. Todo lo que no esté naturalmente alineado con un límite de 8 bytes tendrá bytes de relleno insertados para mantener la alineación requerida.

+5

Solo una adición sobre cómo ver los efectos: defina una estructura con algunos elementos de diferentes tamaños (por ejemplo, ' char', 'short',' long', 'double'). Luego, determine el tamaño de la estructura con 'sizeof'. Coloque un par de '#pragma pack (push, n)' y '#pragma pack (pop)' alrededor de la estructura con diferentes valores para 'n' (por ejemplo, 1, 2, 4, 8). Vea cómo cambian los resultados de 'sizeof'. Como opción, verifique el cambio en el direccionamiento relativo de los elementos de la estructura. – Flinsch