C에서 구조체의 padding 억제

FIFO의 이미지

C에서 구조체를 쓰는데... 프로그램이 2개입니다.
그런데 서로 크기가 짝짝이가 되는게 아닌가 싶어서요...
용량도 줄일 겸 padding을 못하게 하고 크기가 딱 맞는걸 보장하게 하고 싶습니다.
그런데 뭘 지정해줘야 그렇게 되는건지 잊어버렸습니다. #pragma 뭘로 지정했던거 같은데...
그리고 같은 머신에서 같은 컴파일러로 빌드하는데 크기 차이가 날 수 있을까요?
어떤 경우에 차이가 나는건지... 알려주시면 감사하겠습니다.

FIFO의 이미지

http://kldp.org/node/100453

#pragma pack(4)
이거로군요

haze11의 이미지

struct a {
...
} __attribute__ ((packed));

해도 됩니다. =.=

FIFO의 이미지

음... 저렇게 하면 해당 구조체만 pack시킬 수 있는건가요?
안 그래도 그런걸 찾고 있었습니다;;; 다른 구조체에 영향을 주면 안 되기에...

Hyun의 이미지

이건 gcc 확장입니다. 편하긴 하지만 다른 컴팔러에선 안됩니다.


나도 세벌식을 씁니다
FIFO의 이미지

혹시나 기대했는데 역시나...
여하튼 매우 매우 감사합니다.