2017-10-10 157 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 

回答