2017-10-10 112 views
0

代码语句看起来像下面的表达式:我不知道为什么QAC是产生此警告右手操作数“||”是可能的副作用

if((temp1 == ID1) || (temp2 == (C_UINT16) ID2)) 
{ 

} 

。 &如何避免此警告会产生什么副作用?

细则QAC的帮助:

如果 左手操作数的计算结果为逻辑& &运算符的右手操作数只计算1(“真”)。逻辑||的右侧操作数 如果左手操作数 的计算结果为0(“假”)运算符仅被评估。

由于这种行为,如果任一这些操作符的右手 操作数产生的副作用可能会出现混乱。消息 3415被生成来识别这种情况。

  1. 访问的易失性对象
  2. 执行一递增,递减,分配或复合赋值 操作
  3. 执行I/O或
  4. 呼叫:当表达式发生

    副作用这确实任何上述

的函数3210

然而QAC假定发生的副作用每当函数 调用,除非函数已特别被确定为通过以下形式的#pragma语句不同于副作用 自由:

#pragma PRQA_NO_SIDE_EFFECTS funcname 

回答

相关问题