Skip to main content

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

Beispiel 54. Beispiel
PROGRAM PLC_PRG
VAR
    pInt : POINTER TO INT;
    byteVar : BYTE;
END_VAR
pInt := ADR(byteVar);

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0019: Implizite Konvertierung von Pointer auf 'POINTER TO BYTE' zu Pointer auf 'POINTER TO INT'