SA0064: Addition eines Pointers
Funktion | Ermittelt alle Additionen von Pointern. |
Begründung | In TwinCAT ist eine Pointerarithmetik grundsätzlich erlaubt und kann sinnvoll eingesetzt werden. Diese 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 |
Beispiele:
PROGRAM MAIN
VAR
aTest : ARRAY[0..10] OF INT;
pINT : POINTER TO INT;
nIdx : INT;
END_VARpINT := ADR(aTest[0]);
pINT^ := 0;
pINT := ADR(aTest) + SIZEOF(INT); // => SA0064
pINT^ := 1;
pINT := ADR(aTest) + 6; // => SA0064
pINT := ADR(aTest[10]);
FOR nIdx := 0 TO 10 DO
pINT^ := nIdx;
pINT := pINT + 2; // => SA0064
END_FOR