SA0061: Operazione insolita sul puntatorePermalink

Rileva le operazioni su variabili di tipo ‎POINTER TO‎ che non sono ‎=‎ (uguaglianza), ‎<>‎ (disuguaglianza), ‎+‎ (addizione) o ‎ADR‎.

In CODESYS, l'aritmetica dei puntatori è generalmente consentita e può essere utilizzata in modo appropriato. Pertanto, l'addizione di un puntatore con un valore intero è considerata un'operazione comune sui puntatori. In questo modo è possibile utilizzare un puntatore per elaborare un array di lunghezza variabile. Tutte le altre operazioni (insolite) con i puntatori vengono segnalate con SA0061.

Importanza: Alto

Regola PLCopen: E2 / E3

Esempio

PROGRAM PLC_PRG
VAR
	piTemp : POINTER TO INT;	
	iTemp : INT;
END_VAR

iTemp := iTemp + INT#1;
piTemp := ADR(iTemp);
piTemp := piTemp * DWORD#5;   // SA0061
piTemp := piTemp / DWORD#2;   // SA0061
piTemp := piTemp MOD DWORD#3; // SA0061
piTemp := piTemp + DWORD#1;
piTemp := piTemp - DWORD#1;   // SA0061

--> SA0061: Unusual operation on pointer