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.