Skip to main content

SA0064: Addition eines Pointers

Ermittelt Additionen von Pointern.

Begründung: In CODESYS ist eine Pointerarithmetik grundsätzlich erlaubt und kann sinnvoll eingesetzt werden. Sie stellt aber auch eine Fehlerquelle dar. Deswegen gibt es Programmiervorschriften, die eine Pointerarithmetik grundsätzlich verbieten. Eine solche Vorschrift kann mit diesem Test überprüft werden.

Wichtigkeit: Mittel

Beispiel 75. Beispiel
PROGRAM PLC_PRG
VAR
    iTest : INT;
    ariTest : ARRAY[0..10] OF INT;
    {attribute 'analysis':='-111'}
    piTest : POINTER TO INT;
    i : INT;
END_VAR
piTest := ADR(ariTest[0]);    // OK
piTest^ := 0;
piTest := ADR(ariTest) + SIZEOF(INT);    // SA0064
piTest^ := 1;
piTest := ADR(ariTest) + 6;    // SA0064
piTest^ := 3;
piTest := ADR(ariTest[10]);
FOR i:=0 TO 10 DO
    piTest^ := i;
    piTest := piTest + 2;    // SA0064
END_FOR

Ausgabe unter Ansicht Meldungen:

  • sa_icon_message.png SA0064: Addition eines Pointers