0
代码语句看起来像下面的表达式:我不知道为什么QAC是产生此警告右手操作数“||”是可能的副作用
if((temp1 == ID1) || (temp2 == (C_UINT16) ID2))
{
}
。 &如何避免此警告会产生什么副作用?
细则QAC的帮助:
如果 左手操作数的计算结果为逻辑& &运算符的右手操作数只计算1(“真”)。逻辑||的右侧操作数 如果左手操作数 的计算结果为0(“假”)运算符仅被评估。
由于这种行为,如果任一这些操作符的右手 操作数产生的副作用可能会出现混乱。消息 3415被生成来识别这种情况。
- 访问的易失性对象
- 执行一递增,递减,分配或复合赋值 操作
- 执行I/O或
- 呼叫:当表达式发生
副作用这确实任何上述
然而QAC假定发生的副作用每当函数 调用,除非函数已特别被确定为通过以下形式的#pragma语句不同于副作用 自由:
#pragma PRQA_NO_SIDE_EFFECTS funcname