프로그래밍/C, C++

#pragma pack -2

ShyK 2017. 9. 7. 10:32
반응형

그렇다면 어떻게해야 

struct S

{

char c;

double d;

int i;

};


구조체 패킹을 없앨 수 있을까????




#pragma pack(push,1)

struct S

{

char c;

double d;

int i;

};

#pragma pack(pop)



이렇게하면 된다 !


#pragma pack(push,1)를 통해서


스택에 1Byte로 정렬하게된다.


그래서 

1 + 8 + 4 = 13byte가 나오게 되는것이다.!


다른 byte로 정렬하고 싶으면


1 대신에 2,4,8을 넣어주면 된다.



#pragma pack(pop)를 쓴 이유는


"내가 여기까지 구조체(클래스)의 바이트 패킹을 몇 바이트로 했는데 이제 이 전의 바이트패킹으로 되돌릴거야"

라는 것과 마찬가지 이다.


그래서 #pragma pack(pop)을 통해서 이 전의 바이트패킹으로 되돌릴 수 있다.







반응형