SA0018: Unübliche Bitzugriffe
Funktion | Ermittelt Bitzugriffe auf vorzeichenbehaftete Variablen. Die Norm IEC 61131-3 erlaubt allerdings nur Bitzugriffe auf Bitfelder. Sehen Sie hierzu auch die strikte Regel SA0148: Unüblicher Bitzugriff - strikt. |
Begründung | Vorzeichenbehaftete Datentypen sollten nicht als Bitfelder verwendet werden und umgekehrt. Die Norm IEC 61131-3 sieht solche Zugriffe nicht vor. Diese Regel muss eingehalten werden, wenn der Code protierbar sein soll. |
Ausnahme | Ausnahme für Flag-Enumerationen: Wenn eine Enumeration mit Hilfe des Pragmaattributs {attribute 'flags'} als Flag deklariert ist, wird für Bitzugriffe mit den Operationen OR, AND oder NOT der Fehler SA0018 nicht ausgegeben. |
Wichtigkeit | Mittel |
Beispiele:
PROGRAM MAIN
VAR
nINT : INT;
nDINT : DINT;
nULINT : ULINT;
nSINT : SINT;
nUSINT : USINT;
nBYTE : BYTE;
END_VARnINT.3 := TRUE; // => SA0018
nDINT.4 := TRUE; // => SA0018
nULINT.18 := FALSE; // no error because this is an unsigned data type
nSINT.2 := FALSE; // => SA0018
nUSINT.3 := TRUE; // no error because this is an unsigned data type
nBYTE.5 := FALSE; // no error because BYTE is a bit field