SA0007: Operatore indirizzo su costanti
Trova le righe di codice in cui l'operatore ADR
applicato a una costante.
Motivo: un puntatore a una variabile costante solleva il CONSTANT
proprietà della variabile. La variabile può essere modificata tramite il puntatore senza che il compilatore lo riporti.
Eccezione: in rari casi può avere senso trasferire un puntatore a una costante in una funzione. Tuttavia, è necessario assicurarsi che questa funzione non modifichi il valore trasferito. Usa se possibile VAR_IN_OUT CONSTANT
.
Importanza: Alta
Suggerimento
Quando il Sostituisci le costanti l'opzione è selezionata in Opzioni del compilatore delle impostazioni del progetto, l'operatore indirizzo non è consentito per le costanti scalari (intere, BOOL
, REAL
) e viene emesso un errore di compilazione. (Le stringhe, le strutture e gli array costanti hanno sempre un indirizzo.)
PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR poiValue : POINTER TO INT; END_VAR
poiValue := ADR(c_iValue); // SA0007
Uscita in Messaggi vista:
SA0007: Indirizzo della variabile costante 'c_iValue'