www.digitalmars.com Home | Search | C & C++ | D | DMDScript | News Groups | index | prev | next
Archives

D Programming
D
D.gnu
digitalmars.D
digitalmars.D.bugs
digitalmars.D.dtl
digitalmars.D.ide
digitalmars.D.dwt
digitalmars.D.announce
digitalmars.D.learn
digitalmars.D.debugger

C/C++ Programming
c++
c++.announce
c++.atl
c++.beta
c++.chat
c++.command-line
c++.dos
c++.dos.16-bits
c++.dos.32-bits
c++.idde
c++.mfc
c++.rtl
c++.stl
c++.stl.hp
c++.stl.port
c++.stl.sgi
c++.stlsoft
c++.windows
c++.windows.16-bits
c++.windows.32-bits
c++.wxwindows

digitalmars.empire
digitalmars.DMDScript
electronics



digitalmars.D.learn - struct members align

↑ ↓ ← alxdef <alxdef yandex.ru> writes:
I have some problem with struct alignment. My struct is:
struct some_struct
{
    ubyte member1;
    ubyte member2;
    ubyte member3;
    ushort member5;
    ushort member6;
}
The appearance of members is fixed. member5 shifted by 1 byte down to member6.
How to fix this problem?
Apr 28 2008
↑ ↓ Lutger <lutger.blijdestin gmail.com> writes:
alxdef wrote:

 I have some problem with struct alignment. My struct is:
 struct some_struct
 {
     ubyte member1;
     ubyte member2;
     ubyte member3;
     ushort member5;
     ushort member6;
 }
 The appearance of members is fixed. member5 shifted by 1 byte down to
 member6. How to fix this problem?

align(1) struct some_struct { ... } will do the trick, I think.
Apr 28 2008
↑ ↓ alxdef <alxdef yandex.ru> writes:
Lutger Wrote:

 align(1) struct some_struct { ... } will do the trick, I think.

As Russians say: The fakir was drunk, trick is not has gone right. :-(
Apr 28 2008
↑ ↓ → Lutger <lutger.blijdestin gmail.com> writes:
alxdef wrote:

 Lutger Wrote:
 
 align(1) struct some_struct { ... } will do the trick, I think.

As Russians say: The fakir was drunk, trick is not has gone right. :-(

Which compiler? Or have I misunderstood the question mayhaps, this program works under dmd 1.027: struct some_struct { ubyte member1; ubyte member2; ubyte member3; ushort member4; ushort member5; } align(1) struct some_struct2 { ubyte member1; ubyte member2; ubyte member3; ushort member4; ushort member5; } void main() { assert(some_struct.sizeof == 8); assert(some_struct2.sizeof == 7); }
Apr 28 2008