POU: CheckPointer
Funzione di monitoraggio per puntatori (CheckPointer)
Utilizzare questa funzione per monitorare l'accesso alla memoria dei puntatori in modalità runtime. Al contrario di altri funzioni di monitoraggio, non esiste un suggerimento standard per l'attuazione di CheckPointer
. È necessario definire un'implementazione in base alle proprie esigenze.
Il CheckPointer
la funzione dovrebbe verificare se il puntatore passato fa riferimento o meno a un indirizzo di memoria valido e se l'orientamento dell'area di memoria di riferimento corrisponde o meno al tipo di variabile a cui si riferisce il puntatore. Se entrambe le condizioni sono soddisfatte, viene restituito il puntatore. In caso contrario, la funzione dovrebbe completare un'appropriata gestione degli errori.
Attenzione
Per ottenere la funzionalità per le funzioni di monitoraggio, non modificare la parte della dichiarazione. Tuttavia, è consentito aggiungere variabili locali.
Importante
Non si verifica una chiamata implicita alla funzione di monitoraggio per THIS
puntatore e SUPER
puntatore.
Importante
Nella versione del compilatore 3.5.7.40 e successive, il CheckPointer colpisce anche REFERENCE
variabili come le variabili puntatore.
Dichiarazione:
// Automatically generated code: DO NOT EDIT FUNCTION CheckPointer : POINTER TO BYTE VAR_INPUT ptToTest : POINTER TO BYTE; iSize : DINT; iGran : DINT; bWrite: BOOL; END_VAR
Attuazione: (incompleta)
// Not a standard implementation. Insert your code here. CheckPointer := ptToTest;
ptToTest
: Indirizzo di destinazione del puntatoreiSize
: Dimensione della variabile di riferimento; il tipo di dati diiSize
deve essere compatibile conINT
e coprono l'ambito dimensionale delle variabiliiGran
: Granularità della dimensione di riferimento; questo è il più grande tipo di dati non strutturati contenuto nelle variabili referenziate; il tipo di dati diiGran
deve essere compatibile conINT
bWrite
: Tipo di accesso (TRUE
= accesso in scrittura,FALSE
= accesso in lettura); il tipo di dati dibWrite
deve essereBOOL
Quando il risultato del controllo è positivo, viene restituito il puntatore invariato (ptToTest
).