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:
SA0064: Addition eines Pointers