SA0046: Mögliche Verwendung nicht initialisierter Schnittstellen
Funktion | Ermittelt die Verwendung von Schnittstellen, die vor der Verwendung möglicherweise nicht initialisiert wurden. |
Begründung | Eine Interface-Referenz sollte vor ihrer Verwendung auf <> 0 geprüft werden, weil es sonst beim Zugriff zur Laufzeit zu einer "Access Violation" kommen kann. |
Wichtigkeit | Hoch |
Beispiele:
Schnittstelle I_Sample:
INTERFACE I_SampleMETHOD SampleMethod : BOOL
VAR_INPUT
nInput : INT;
END_VARFunktionsbaustein FB_Sample:
FUNCTION_BLOCK FB_Sample IMPLEMENTS I_SampleMETHOD SampleMethod : BOOL
VAR_INPUT
nInput : INT;
END_VARProgramm MAIN:
PROGRAM MAIN
VAR
fbSample : FB_Sample;
iSample : I_Sample;
iSampleNotSet : I_Sample;
nParam : INT;
bReturn : BOOL;
END_VARiSample := fbSample;
bReturn := iSample.SampleMethod(nInput := nParam); // no error
bReturn := iSampleNotSet.SampleMethod(nInput := nParam); // => SA0046Überblick über die Regeln zum Thema „Dereferenzierung“
Pointer | |
|---|---|
Dereferenzierung von Pointern im Deklarationsteil | |
Mögliche Null-Pointer-Dereferenzierung im Implementierungsteil | |
Referenzen | |
|---|---|
Verwendung von Referenzen im Deklarationsteil | |
Mögliche Verwendung nicht initialisierter Referenzen im Implementierungsteil | SA0145: Mögliche Verwendung nicht initialisierter Referenzen |
Schnittstellen | |
|---|---|
Mögliche Verwendung nicht initialisierter Schnittstellen im Implementierungsteil | SA0046: Mögliche Verwendung nicht initialisierter Schnittstellen |