SA0007: Adressoperator auf Konstanten
Funktion | Ermittelt Stellen, an denen der ADR-Operator 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 in diesem Fall wenn möglich VAR_IN_OUT CONSTANT. |
Wichtigkeit | Hoch |
![]() | Wenn die Option Konstanten ersetzen in den Compiler-Optionen der SPS-Projekteigenschaften 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 MAIN
VAR CONSTANT
cValue : INT := INT#15;
END_VAR
VAR
pValue : POINTER TO INT;
END_VARpValue := ADR(cValue); // => SA0007