Skip to main content

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 CONSTANTproprietà 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.)

Esempio 19. 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

Uscita in Messaggi vista:

  • sa_icon_message.png SA0007: Indirizzo della variabile costante 'c_iValue'