Detecta las líneas de código en las que se aplica el operador ADR para una constante
Justificación: El uso de un puntero a una variable constante anula la propiedad CONSTANT de la variable. La variable puede modificarse mediante el puntero sin que el compilador
lo notifique.
Excepción: En raras ocasiones, puede ser útil pasar un puntero a una constante a una
función. Sin embargo, debe asegurarse de que esta función no modifique el valor transferido.
Siempre que sea posible, utilice VAR_IN_OUT CONSTANT.
Importancia: Alta
Cuando la opción «reemplazar constantes» está seleccionada en las opciones del compilador de la configuración del proyecto, el operador de dirección no está permitido para constantes escalares (integer, BOOL, REAL) y se emite un error de compilación. (Las cadenas, estructuras y matrices constantes siempre tienen una dirección).
Ejemplo
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'