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_FORAusgabe unter Ansicht Meldungen:
SA0064: Addition eines Pointers