64 비트
32 비트 창에 g ++를 사용하여 구조체를 패킹하려고합니다.C/C++ struct 패킹이 작동하지 않습니다.
struct Foo
{
uint8_t a;
uint32_t b;
} __attribute__((packed));
int main(int argc, char *argv[])
{
qDebug() << "sizeof(Foo):" << sizeof(Foo);
return 0;
}
이 내가 해봤 8. 기타 물건 출력 :
{ uint8_t a; } // Gives 1, correct.
{ uint8_t a; float b; } // Gives 8, expected 5.
{ uint8_t a; uint16_t b; } // Gives 4, expected 3.
{ uint16_t a; uint8_t b; uint8_t c; } // Gives 4, correct.
그래서이 구조체는 포장처럼 보이지만 sizeof
어떤 경우에는 반올림? (사실이 질문을 작성한 후에 나는 대답 할 수 있다고 생각하지만 후일을 위해 그것을 게시 할 것입니다.)
편집 : 사실 저는 잘 모릅니다. 나는 aligned(1)
가 그것을 고칠 것이라고 생각했지만 그렇지 않았습니다.
, 진행 : 3,516,는
표준 입력
표준 출력 사본
를 sizeof (푸)이 비어 복사합니다. – chris
@Timmmm 코딩 할 경우'#pragma pack (1)'을 사용하십시오. – Sathish
만약 당신이 그들을 더 작게 구조체에 마지막 작은 유형을 넣어보십시오. –