Ermittelt Codezeilen, an denen der Operator ADR
bei einer Konstanten angewendet wird.
Begründung:
Durch einen Pointer auf eine konstante Variable hebt man die CONSTANT
-Eigenschaft der Variable auf. Über den Pointer kann die Variable verändert werden,
ohne dass der Compiler dies meldet.
Ausnahme:
In seltenen Fällen kann es sinnvoll sein, einen Pointer auf eine Konstante an eine
Funktion zu übergeben. Es muss dann allerdings gewährleistet sein, dass diese Funktion
den übergebenen Wert nicht ändert.
Verwenden Sie wenn möglich VAR_IN_OUT CONSTANT
.
Wichtigkeit: Hoch
Wenn die Option „Konstanten ersetzen“ in den „Compileroptionen“ der Projekteinstellungen aktiviert ist, ist der Adressoperator für skalare Konstanten (Integer, BOOL, REAL) nicht erlaubt und ein Übersetzungsfehler wird ausgegeben. (Konstante Strings, Strukturen und Arrays haben immer eine Adresse.)
Beispiel
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: Adressoperator auf konstante Variable 'c_iValue'