Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Rule 19.1 and assigment between members of a struct
Does this code violate rule 19.1?

struct s_tag {  
uint8 ReadPos;
uint8 WritePos; };
typedef struct s_tag s;

union u_tag {
s      Elements;
uint32 Value; };
typedef union u_tag u;

u NewState;
NewState.Elements.ReadPos  = NewState.Elements.WritePos;
My static code checker thinks it is a violation, but from my point of view I'm just assigning one member of a struct to a different member of the struct and they don't overlap in memory. That this struct is a member of a union should not matter as there is no assignment across the members of the union.
Your code is compliant with rule 19.1, though will violate rule 19.2.
Posted by and on behalf of the MISRA C Working Group

Forum Jump:

Users browsing this thread: 1 Guest(s)