What is the alignment area of #pragma pack in Visual C ++? API Link https://msdn.microsoft.com/en-us/library/vstudio/2e70t5y1%28v=vs.120%29.aspx says:
a package takes effect on the first declaration of a struct, union, or class after viewing the pragma
So, as a consequence for the following code:
#include <iostream> #pragma pack(push, 1) struct FirstExample { int intVar; // 4 bytes char charVar; // 1 byte }; struct SecondExample { int intVar; // 4 bytes char charVar; // 1 byte }; void main() { printf("Size of the FirstExample is %d\n", sizeof(FirstExample)); printf("Size of the SecondExample is %d\n", sizeof(SecondExample)); }
I expected:
Size of the FirstExample is 5 Size of the SecondExample is 8
but i got:
Size of the FirstExample is 5 Size of the SecondExample is 5
That's why I'm a little surprised, and I really appreciate any explanation you can provide.
c ++ visual-studio-2013 preprocessor-directive
rgb
source share