KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a predefined struct (actually several) where variables span across 32-bit word boundary. In Linux (and Windows using GCC) I am able to get my structs to pack to the correct size using 'attribute((packed))'. However I cannot get it to work the same way using VC++ and #pragma pack. Using GCC this returns a correct size of 6 bytes: struct { unsigned int a : 3; unsigned int b : 1; unsigned int c : 15; unsigned int troubleMaker : 16; unsigned short padding : 13; } __attribute__((packed)) s; Using VC++ this returns an incorrect size of 8 bytes #pragma pack(push) #pragma pack(1) struct { unsigned int a : 3; unsigned int b : 1; unsigned int c : 15; unsigned int troubleMaker : 16; unsigned short padding : 13; } s; #pragma pack(pop) I can get things to work by splitting 'troubleMaker' across the boundary manually but I'd prefer not to. Any ideas?
Tags (comma-separated)
Save Edits
Cancel