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_VAR
pINT  := 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