We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
please explain me why the sizeof (C51) returns 6 bytes for this struct instead of 5:
typedef struct DEKO_COMM_HEADER { UINT16 m_uiMsgOpcode; UCHAR8 m_sblMsgPriority :2; UINT16 m_sblDataLength :11; UINT16 m_sblMsgTimeStamp :11; }DEKO_COMM_HEADER, *PDEKO_COMM_HEADER;
UINT16 is typedef for unsigned int UCHAR8 is typedef for unsigned char
thanks
Which compiler are you using ? Compiling your example shows a size of 7 which is correct since an UINT16 can hold a max. of 16 bits. Please look at the symbol listing for details on size and layout of the fields.
C51 COMPILER V8.08a, COMPILATION OF MODULE Q OBJECT MODULE PLACED IN q.OBJ COMPILER INVOKED BY: c51.exe q.c CODE SB line level source 1 typedef unsigned char UCHAR8; 2 typedef unsigned int UINT16; 3 4 typedef struct DEKO_COMM_HEADER { 5 UINT16 m_uiMsgOpcode; 6 UCHAR8 m_sblMsgPriority : 2; 7 UINT16 m_sblDataLength :11; 8 UINT16 m_sblMsgTimeStamp :11; 9 } DEKO_COMM_HEADER; 10 11 12 unsigned char z; 13 14 void main (void) { 15 1 z = sizeof (DEKO_COMM_HEADER); 16 1 } ASSEMBLY LISTING OF GENERATED OBJECT CODE ; FUNCTION main (BEGIN) ; SOURCE LINE # 14 ; SOURCE LINE # 15 0000 750007 R MOV z,#07H ; SOURCE LINE # 16 0003 22 RET ; FUNCTION main (END) NAME CLASS MSPACE TYPE OFFSET SIZE ==== ===== ====== ==== ====== ==== main . . . . . . . . . . . . . . . . . PUBLIC CODE PROC 0000H ----- UINT16 . . . . . . . . . . . . . . . . TYPEDEF ----- U_INT ----- 2 UCHAR8 . . . . . . . . . . . . . . . . TYPEDEF ----- U_CHAR ----- 1 DEKO_COMM_HEADER . . . . . . . . . . . TYPEDEF ----- STRUCT ----- 7 m_uiMsgOpcode. . . . . . . . . . . . MEMBER ----- U_INT 0000H 2 m_sblMsgPriority . . . . . . . . . . MEMBER ----- FIELD 0002H 2.0 m_sblDataLength. . . . . . . . . . . MEMBER ----- FIELD 0003H 11.0 m_sblMsgTimeStamp. . . . . . . . . . MEMBER ----- FIELD 0005H 11.0 DEKO_COMM_HEADER . . . . . . . . . . . * TAG * ----- STRUCT ----- 7 m_uiMsgOpcode. . . . . . . . . . . . MEMBER ----- U_INT 0000H 2 m_sblMsgPriority . . . . . . . . . . MEMBER ----- FIELD 0002H 2.0 m_sblDataLength. . . . . . . . . . . MEMBER ----- FIELD 0003H 11.0 m_sblMsgTimeStamp. . . . . . . . . . MEMBER ----- FIELD 0005H 11.0 z. . . . . . . . . . . . . . . . . . . PUBLIC DATA U_CHAR 0000H 1