Skip to main content

SA0007:常量上的地址运算符

检测操作员所在的代码行 ADR 应用于一个常数

理由:使用指向常量变量的指针会覆盖 CONSTANT 变量的属性。可以通过指针更改变量,而无需编译器发出任何通知。

例外:在极少数情况下,将指向常量的指针传递给函数可能很有用。但是,您必须确保此函数不会更改传输的值。尽可能使用 VAR_IN_OUT CONSTANT.

重要性:高

提示

当。。。的时候 替换常量 选项被选中 编译器选项 在项目设置中,标量常量(整数、 BOOL, REAL)并发出编译错误。 (常量字符串、结构体和数组始终有一个地址。)

19. 例子
PROGRAM PLC_PRG
VAR CONSTANT
        c_iValue : INT := INT#15;
END_VAR
VAR
        poiValue : POINTER TO INT;
END_VAR
poiValue := ADR(c_iValue); // SA0007

输出在 留言 看法:

  • sa_icon_message.png SA0007:常量变量“c_iValue”的地址