Rileva le righe di codice in cui l'operatore ADR viene applicato per una costante
Giustificazione: L'uso di un puntatore a una variabile costante sovrascrive la proprietà
CONSTANT della variabile. La variabile può essere modificata tramite il puntatore senza alcuna
notifica da parte del compilatore.
Eccezione: In rari casi, può essere utile passare un puntatore a una costante a una
funzione. Tuttavia, è necessario assicurarsi che questa funzione non modifichi il
valore trasferito. Quando possibile, utilizzare VAR_IN_OUT CONSTANT.
Importanza: Alto
Quando l'opzione «replace constants» è selezionata nelle «opzioni del compilatore» delle impostazioni del progetto, l'operatore address non è consentito per le costanti scalari (integer, BOOL, REAL) e viene emesso un errore di compilazione. (Le stringhe, le strutture e gli array costanti hanno sempre un indirizzo).
Esempio
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'