![]() |
AW: Compiler warnt nicht vor nicht initialisierter Variable
Zitat:
Delphi-Quellcode:
dann erhält man 3 (in Worten drei) mal die gleiche Warnung.
procedure forProc();
label xx; var myArray: TArray<Single>; arrayIndex: Integer; begin for arrayIndex := Low(myArray) to High(myArray) do if (arrayIndex = 42) then goto xx; xx: WriteLn(arrayIndex); readln; end; |
AW: Compiler warnt nicht vor nicht initialisierter Variable
Zitat:
Ja, es kann "zufällig" mal sein, daß die Variable danach noch den selben Wert hat, aber wenn hier eine der möglichen Optimierungen zuschlägt, dann war's das damit. * der Compiler lässt intern die Zählung eventuell rückwärts laufen, wenn er das für optimaler erachtet * oder er lässt die Variable wärend der Schleife in einem der CPU-Registier und kopiert es danach natürlich nicht in die Variable auf dem Stack, da das sinnlos wäre, weil laut Definition danach die Schleifenvariable nicht mehr verwendet wird. * ... |
AW: Compiler warnt nicht vor nicht initialisierter Variable
Delphi-Quellcode:
Na ja, vielleicht vom Übergang von früheren Delphiversionen auf Delphi5 an klappte die Technik von Schleife 2 und man konnte sich das Hochzählen einer temporären Variablen parallel zum Schleifenindex sparen. Jedenfalls schien mir das durch die nun fehlende Warnung gerechtfertigt zu sein. Ich habe das dann bis jetzt (D2010) ziemlich intensiv genutzt und bin auch noch nicht hingefallen :)
FUNCTION TestIndex:Boolean;
LABEL Stop; VAR i: Integer; BEGIN Result := False; FOR i:=0 TO 10 // Schleife 1 DO ; IF i = 8 THEN ; // [DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop FOR i:=0 TO 10 // Schleife 2 DO IF i = 8 THEN Break; IF i = 8 THEN ; // Keine Warnung // Diese Zeilen hinzufügen // Dann wird es lustig: FOR i:=0 TO 10 // Schleife 3 DO IF i = 8 THEN GOTO Stop; Stop: IF i = 8 THEN ; [DCC Warning] Test.pas(27): W1037 FOR-Loop variable 'i' may be undefined after loop [DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop [DCC Warning] Test.pas(27): W1037 FOR-Loop variable 'i' may be undefined after loop [DCC Warning] Test.pas(12): W1037 FOR-Loop variable 'i' may be undefined after loop END; Aber was da nach dem Hinzufügen von Schleife 3 angezeigt wird, macht einen natürlich nachdenklich. |
AW: Compiler warnt nicht vor nicht initialisierter Variable
Zitat:
|
AW: Compiler warnt nicht vor nicht initialisierter Variable
Ich dachte Win/Win32 ist immernoch das Alte und noch nix mit LLVM?
|
AW: Compiler warnt nicht vor nicht initialisierter Variable
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz