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.
Hello guys, i am having this errore with the following code:
startLinst(Timer_u *head){ Timer_u *ptr;
(Timer_u *)ptr->list1->pnext = *head; } where head is the pointer to the head of a linked list.
the ADT is: typedef union TIMER_U{ Timer4 *timer4; Timer3 *timer3; Timer2 *timer2; Timer1 *timer1; }Timer_u;
typedef struct TIMER1{ unsigned char TimerID; unsigned char cnt; unsigned char processo:6; unsigned char type:2; union Timer_u *pnext; }Timer1;
Can anyone help me to avoid this warning message?
removing the union I got the error "undefined class storage", so I put the code union TIMER_U before the definition of the structs timer1/2/3/4 and this will make the compiler happy
Isn't it "undefined storage class" instead? Besides, it seems to me it's not the right way to make the compiler happy. I think we're not seeing the whole picture: the code you posted is incomplete, it's not clear in what order things are declared and defined.
you are right some infos are missing: the ADT is defined in a header file, in the inverse order: i mean the struct is defined before the union this is the right order
typedef struct TIMER1{ unsigned char TimerID; unsigned char cnt; unsigned char processo:6; unsigned char type:2; union Timer_u *pnext; }Timer1; typedef struct TIMER2{...} Timer2; typedef struct TIMER3{...} Timer3; typedef struct TIMER4{...} Timer4; typedef union TIMER_U{ Timer4 *timer4; Timer3 *timer3; Timer2 *timer2; Timer1 *timer1; }Timer_u;
so I changed it in this way
union TIMER_U; typedef struct TIMER1{ unsigned char TimerID; unsigned char cnt; unsigned char processo:6; unsigned char type:2; union TIMER_U *pnext; }Timer1; typedef struct TIMER2{...} Timer2; typedef struct TIMER3{...} Timer3; typedef struct TIMER4{...}Timer4; typedef union TIMER_U{ Timer4 *timer4; Timer3 *timer3; Timer2 *timer2; Timer1 *timer1; }Timer_u;
Yes, this new version of the code looks right. What about the code that throws the warning? Is the warning still there? Did you post the complete offending code?
I have removed the cast and the warning message is non more there :) thanks for you help.