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.
I need to set up the following union type definition in a global header (.h) file typedef union { struct { unsigned char App_Data_Type; //Power on tests unsigned char DPort_RAM_Fail_Flag :1; unsigned char EEPROM_Fail_Flag :1; unsigned char Watchdog_Fail_Flag :1; unsigned char RAM_Fail_flag :1; unsigned char Software_Build_Fail_Flag :1; unsigned char Backlight_Fail_Flag :1; unsigned char Over_Temp_Fail_Flag :1; unsigned char Spare_DV1 :1; //Routine Flags unsigned char Invalid_Message_Flag :1; unsigned char Display_Blank_Flag :1; unsigned char Int_Light_Sensor_Fail_Flag :1; unsigned char Temp_Sensor_Fail_Flag :1; unsigned char Ext_Light_Sensor_Fail_Flag:1; unsigned char Spare_DV2:3; //Comms Flags unsigned char CAN_Bus_Off_Flag :1; unsigned char Rx_Timeout_Error_Flag:1; unsigned char Segmentation_Error_Flag :1; unsigned char Spare_DV3 :5; //Reprogrammming Flags unsigned char Reprogramming_RAM_Fail_Flag :1; unsigned char Spare_DV4 :7; //Range checking flags unsigned char Time_And_Date_Range_Fail_Flag :1; unsigned char Status_Resp_Range_Fail_Flag :1; unsigned char Spare_DV5 :6; //Spare bytes unsigned char Spare_DV6; unsigned char Spare_DV7; } tDefault_Variables_Response; unsigned char bit_field_bytes[7]; } Def_Var; However after declaring a variable instance Def_Var_Mem Def_Var; I get the compiler warning "error C129 : missing ';' before 'Def_Var'" Can any one tell me if the mistake is mine or the compilers please. If the mistake is the compilers is there a workaround.
Now that you've got it to compile, have you seen the following Keil knowledgebase articles for a couple of gotchas! with bitfields & unions: GENERAL: UNION INVOLVING A BITFIELD IS THE WRONG SIZE http://www.keil.com/support/docs/928.htm C51: BIT FIELD UNIONS DON'T WORK AS EXPECTED http://www.keil.com/support/docs/1279.htm