Der Delphi-Compiler warnt nicht vor diesem Code

8

Beim Debuggen meines Codes habe ich festgestellt, dass der Delphi-Compiler (Berlin 10.1) nicht vor Funktionen warnt, die keinen Rückgabewert haben. Ist das normal?

Ein einfaches Beispiel:

%Vor%

diese Zeile

%Vor%

Sollte

sein %Vor%

Keine Warnung!

Ich denke, es sollte warnen "Rückgabewert könnte undefiniert sein". Aber das tut es nicht. Ich habe in den letzten Tagen einen Teil der alten Codes geändert und umgeschrieben. Ich fürchte, ich habe einen solchen Fehler in meiner Bewerbung.

    
Shahram Banazadeh 04.02.2018, 08:13
quelle

1 Antwort

9

Es ist ein Compilerfehler. Die Rückgabewerte von verwalteten Typen werden als var-Parameter implementiert. Sobald der Compiler die Funktion in eine Prozedur mit einem zusätzlichen var-Parameter für den Rückgabewert umgewandelt hat, sieht er einen var-Parameter, von dem angenommen wird, dass er vom Aufrufer initialisiert wurde. Das ist die Ursache des Problems. Ich entschuldige mich nicht, es ist ein klarer Defekt und ein schlechter. Ich gebe nur ein wenig Hintergrundwissen darüber, wie das passieren kann.

Es gibt nicht viel, was Sie dagegen tun können. Vielleicht ist das Beste, was Sie tun können, sicherzustellen, dass Ihr Code eine starke Unit-Testabdeckung aufweist. Statische Analysewerkzeuge wie FixInsight können ebenfalls eingesetzt werden, um solche Fehler in Ihrem Code zu beseitigen.

    
David Heffernan 04.02.2018, 08:31
quelle

Tags und Links