SA0052:不寻常的移位操作
检测有符号变量的移位操作(位移)。在对位域数据类型进行移位操作的情况下(Byte
, DWORD
, LWORD
, WORD
),不报错。
理由: CODESYS 允许对有符号数据类型进行移位操作。但是,这些操作是不寻常的并且可能会令人困惑。 IEC 61131-3 标准不提供此类操作。因此,应该避免它们以增加代码对其他开发系统的可移植性。
重要性:中等
例 62. 例子
PROGRAM PLC_PRG VAR iTemp : INT; dwTemp1 : DWORD; byTemp2 : BYTE; diTemp3 : DINT; siTemp4 : SINT; liTemp5 : LINT; END_VAR
//the following lines each will cause an SA0052: iTemp := SHL(iTemp, BYTE#2); diTemp3 := SHR(diTemp3, BYTE#4); siTemp4 := ROL(siTemp4, BYTE#2); liTemp5 := ROR(liTemp5, BYTE#2); //no error SA0052 because DWORD and BYTE are bitfield datatypes: dwTemp1 := SHL(dwTemp1, BYTE#3); byTemp2 := SHR(byTemp2, BYTE#1);
输出在 留言 看法:
SA0052:异常轮班操作