Warning: Local variable "h" does not seem to be initialized

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
Mathias
Beiträge: 6941
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Warning: Local variable "h" does not seem to be initialized

Beitrag von Mathias »

Wieso bekommen ich folgende Warnung

Code: Alles auswählen

Warning: Local variable "h" does not seem to be initialized
Warning: Local variable "r" does not seem to be initialized
bei folgenden Code ?
Ich habe h + r extra auf 0.0 gesetzt.

Code: Alles auswählen

procedure TBasisTriangleVAO.Ring(r1, r2, h1, h2: single);
var
  i: integer;
  h: single = 0.0;
  r: single = 0.0;
 
  function norm(a, b: single): TVector3f; inline;
  begin
    Result := vec3(h * a, r, h * b);
  end;
 
begin
  r := r1 - r2;
  h := h2 - h1;
  for i := 0 to FSektoren - 1 do begin
    VierEck(
      vec3(Kreis.Tab[i + 1].a * r1, h1, Kreis.Tab[i + 1].b * r1),
      vec3(Kreis.Tab[i + 1].a * r2, h2, Kreis.Tab[i + 1].b * r2),
      vec3(Kreis.Tab[i + 0].a * r2, h2, Kreis.Tab[i + 0].b * r2),
      vec3(Kreis.Tab[i + 0].a * r1, h1, Kreis.Tab[i + 0].b * r1),
 
      norm(Kreis.Tab[i + 1].a, Kreis.Tab[i + 1].b),
      norm(Kreis.Tab[i + 1].a, Kreis.Tab[i + 1].b),
      norm(Kreis.Tab[i + 0].a, Kreis.Tab[i + 0].b),
      norm(Kreis.Tab[i + 0].a, Kreis.Tab[i + 0].b));
  end;
end;  
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Warning: Local variable "h" does not seem to be initiali

Beitrag von MacWomble »

Zitat:

Die Initialisierung ist allerdings nur bei globalen Variablen möglich. Lokale Variablen von Prozeduren und Funktionen können dagegen auf diese Weise nicht mit Startwerten belegt werden.

Quelle: https://de.wikibooks.org/wiki/Programmi ... Konstanten
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Warning: Local variable "h" does not seem to be initiali

Beitrag von Socke »

Lokale Variablen können ebenfalls initialisiert werden, siehe http://www.freepascal.org/docs-html/ref/refse22.html
@MacWomble: deine Quelle gibt offenbar noch einen alten Stand wieder. In der Tat war dies lange Zeit der Fall.

Falls die Warnung mit der aktuellen Entwickler-Version des Compilers ebenfalls ausgegeben wird, sollte ein Bug-Report erstellt werden.
Zuletzt geändert von Socke am Di 28. Jul 2015, 09:52, insgesamt 1-mal geändert.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6941
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Warning: Local variable "h" does not seem to be initiali

Beitrag von Mathias »

Ich habe es gerad unter Linux kompiliert FPC 2.6.4, dort kommt diese Warnung nicht.
Unter Windows muss ich erst nachgucken, welches FPC installiert ist.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Warning: Local variable "h" does not seem to be initiali

Beitrag von MacWomble »

@socke

Danke, hab ich wieder was gelernt ;-)
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Antworten