MISRA Discussion Forums

Full Version: implicitly cast
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
According to source code below, please kindly help me to clear understanding whether where are the implicitly cast and they will cast to what type?

Warning: Unsuffixed integral literal implicitly cast to another type.

Source code
struct {
unsigned char multiple: 1;
unsigned char event: 1;
unsigned char checksum: 1;
unsigned char conditional: 1;
} flag;

void transmit(void)
if (flag.conditional == 1) { [color=red][b]

if (flag.conditional == 1) { [color=red][b]
and by using unsigned char in a bit field you are also violating rule 6.4
In C90 this code is making use of an extension (in C99 it is implementation-defined behavior; sentence 1385 http://c0x.coding-guidelines.com/

I am guessing that the tool performing the check is not handling the semantics correctly. Even if unsigned char had the same size as unsigned int, the bit-field member would be promoted to type int (not unsigned int; sentence 669 http://c0x.coding-guidelines.com/

I would complain to the tool vendor that they are incorrectly flagging this construct.