I've been facing this MISRA violation:
Definitions:
#define A (1UL << 10)
#define INIT_A ((A) | (1UL << 15))
#define INIT_A_MASK (0xFFFFUL << 15)
#define IS_STATE_IFSET(state, val) ((((state) & (val##_MASK)) == (val)) ? true : false) //issue is here ?
Caller Details:
uint64_t state = 1234UL;
if (!IS_STATE_IFSET(state, INIT_A)) {
printf("Hoo-Haa\n");
}
Misra-2012 reports Rule 20.12 violation misra_c_2012_rule_20_12_violation: macro parameter "val" is used in both expanded and raw forms