Skip to main content

SA0081:上边界不是常数

检测到 FOR 未使用常量值定义上限的语句

理由:如果循环的上限是一个变量值,那么就不再可能看到循环执行的频率。这可能会导致运行时出现严重问题。最坏的情况是无限循环。

重要性:高

86. 例子
PROGRAM PLC_PRG
VAR
    i:INT;
    iBorder1: INT := 10;
    iBorder2: INT := 10;
    iCounter: INT;
END_VAR
VAR CONSTANT
    ciBorder:INT := 10;
END_VAR
FOR i:=0 TO 10 DO    //OK
    iCounter := i;
END_FOR

FOR i:=0 TO ciBorder DO    // OK
    iCounter := i;
END_FOR

FOR i:=0 TO iBorder1 DO    // SA0081
    iCounter := i;
END_FOR

FOR i:=0 TO iBorder2 DO    // SA0081
    iCounter := i;
    IF iCounter = 10 THEN
        iBorder2 := 50;
    END_IF
END_FOR

输出在 留言 看法:

  • sa_icon_message.png SA0081:for循环的上边界必须是常量值