检测运算符ADR
用于常量的代码行
理由使用指向常量变量的指针会覆盖变量的CONSTANT
属性。可以通过指针更改变量,而无需编译器发出任何通知。
例外情况:在极少数情况下,将常量指针传递给函数可能是有用的。不过,您必须确保该函数不会更改传输值。尽可能使用VAR_IN_OUT CONSTANT
。
重要性:高
在项目设置的“编译器选项” 中选择“替换常量” 选项时,不允许对标量常量(整数、BOOL、REAL)使用地址操作符,并会出现编译错误。(常量字符串、结构和数组总是有地址的)。
示例
PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR poiValue : POINTER TO INT; END_VAR poiValue := ADR(c_iValue); // SA0007 --> SA0007: Address to constant variable 'c_iValue'