SA0007: Operador de dirección en constantes
Detecta líneas de código donde el operador ADR se aplica para una constante
Justificación: El uso de un puntero a una variable constante anula el CONSTANT propiedad de la variable. La variable se puede cambiar por medio del puntero sin ninguna notificación del compilador.
Excepción: en casos excepcionales, podría ser útil pasar un puntero a una constante a una función. Sin embargo, debe asegurarse de que esta función no cambie el valor transferido. Siempre que sea posible, utilice VAR_IN_OUT CONSTANT.
Importancia: Alta
Sugerencia
Cuando el Reemplazar constantes La opción está seleccionada en el Opciones del compilador De la configuración del proyecto, el operador de dirección no está permitido para constantes escalares (enteros, BOOL, REAL) y se emite un error de compilación. (Las cadenas, estructuras y matrices constantes siempre tienen una dirección).
PROGRAM PLC_PRG
VAR CONSTANT
c_iValue : INT := INT#15;
END_VAR
VAR
poiValue : POINTER TO INT;
END_VAR
poiValue := ADR(c_iValue); // SA0007
Salida en el Mensajes vista:
SA0007: Dirección a la variable constante 'c_iValue'