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

SA0007: Adressoperator auf Konstanten 1:

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_VAR
pValue := ADR(cValue);           // => SA0007