This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

warning: #1441-D: nonstandard cast on lvalue

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?

Parents
  • 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;
    
    

Reply
  • 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;
    
    

Children