【发布时间】:2019-05-23 13:08:54
【问题描述】:
我一直面临这种 MISRA 违规行为:
定义:
#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 ?
来电者详情:
uint64_t state = 1234UL;
if (!IS_STATE_IFSET(state, INIT_A)) {
printf("Hoo-Haa\n");
}
Misra-2012 报告违反规则 20.12 misra_c_2012_rule_20_12_violation: macro parameter "val" is used in both expanded and raw forms
【问题讨论】:
-
由于您标记了此安全关键代码,因此使用此代码实际上是犯罪行为...
标签: c embedded qnx misra safety-critical