SA0019: Implizite Pointerkonvertierungen
Ermittelt implizit erzeugte Pointerkonvertierungen.
Begründung: In CODESYS sind Pointer nicht streng getypt und können einander aber beliebig zugewiesen werden. Dies wird häufig genutzt und deswegen auch nicht vom Compiler gemeldet. Allerdings kann es dadurch zu unerwünschten und unerwarteten Zugriffen kommen. Wenn man beispielsweise einem Pointer mit Typ POINTER TO BYTE
den Typ POINTER TO DWORD
zuweist, kann unerwünscht Speicher überschrieben werden.
Lassen Sie diese Regel deshalb in jedem Fall prüfen und unterdrücken Sie die Meldung nur in den Fällen, in denen Sie bewusst anders getypt auf einen Wert zugreifen wollen.
Konvertierungen von und zu dem Datentyp POINTER TO BYTE
werden von der Regel SA0019 nicht geprüft. Sie sind immer erlaubt.
Implizite Datentyp-Konvertierungen werden mit einer anderen Meldung gemeldet.
Wichtigkeit: Hoch
PLCopen-Regel: CP25
Ausnahme: BOOL
<-> BIT
PROGRAM PLC_PRG VAR pInt : POINTER TO INT; byteVar : BYTE; END_VAR
pInt := ADR(byteVar);
Ausgabe unter Ansicht Meldungen:
SA0019: Implizite Konvertierung von Pointer auf 'POINTER TO BYTE' zu Pointer auf 'POINTER TO INT'