Skip to main content

SA0008:检查子范围类型

检测超出范围的子范围类型违规。编译器已经检查了分配的文字。分配常量时,值必须在定义的范围内。分配变量时,数据类型必须相同。

说明:如果使用子范围类型,则确保不退出此子范围。编译器仅针对常量分配检查这些类型的子范围违规。

重要性:低

提示

不对 CFC 对象执行检查,因为代码结构不允许这样做。

20. 例子
VAR_GLOBAL
    iVarGlob:INT;
END_VAR
PROGRAM PLC_PRG
VAR
    iSubr1: INT (INT#1..INT#10);
    iSubr2: INT (INT#1..INT#1000);
    iCount: INT;
    by_SubType : BYTE (BYTE#0..BYTE#11);
    iVar : INT (-4095..4095);
END_VAR
iSubr1 := nCount;              // SA0008
iSubr1 := subr2;               // SA0008
iSubr1 := gvl.iVarGlob;        // SA0008
//byBYTE_SubType := BYTE#123;  //already detected by compiler, error "Cannot convert type..."

输出在 留言 看法:

  • sa_icon_message.png SA0008:子范围变量“iSubr1”可能超出允许的范围