Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Inline-Warnung die ich nicht verstehe (https://www.delphipraxis.net/191195-inline-warnung-die-ich-nicht-verstehe.html)

Der schöne Günther 19. Dez 2016 08:48

Delphi-Version: XE7

Inline-Warnung die ich nicht verstehe
 
Folgender Code

Delphi-Quellcode:
unit Unit10;

interface

function somePublicFunc(): Boolean;

implementation uses System.Math;

function somePrivateFunc(): Boolean; inline;
begin
   Result := System.Math.InRange(0.0, -1.0, +1.0); // Ist auch inline
end;

function somePublicFunc(): Boolean;
begin
   Result := somePrivateFunc();
end;

end.
triggert für das "end" der Routine
Delphi-Quellcode:
somePrivateFunc()
folgenden Hinweis:

Zitat:

[dcc32 Hinweis] Unit10.pas(12): H2445 Inline-Funktion 'InRange' wurde nicht expandiert, weil ihre Unit 'System.Math' nicht in der USES-Anweisung des IMPLEMENTATION-Abschnitts angegeben ist und die aktuelle Funktion eine Inline-Funktion ist
Was soll mir das sagen? Was soll ich ändern? Ich verstehe nicht, Ich habe System.Math doch schon in der Uses des Implementation-Abschnitts...

Towmuz 19. Dez 2016 09:00

AW: Inline-Warnung die ich nicht verstehe
 
Frag mich nicht genau nachem dem Warum, aber
Delphi-Quellcode:
interface uses System.Math
muss es wohl sein.

Uwe Raabe 19. Dez 2016 10:07

AW: Inline-Warnung die ich nicht verstehe
 
Das ist ein schlichter Übersetzungsfehler. Im Englischen steht dort:
Zitat:

H2445 Inline function '%s' has not been expanded because its unit '%s' is specified in USES statement of IMPLEMENTATION section and current function is inline function or being inline function
Man beachte das zweite nicht in der Deutschen Übersetzung:
Zitat:

H2445 Inline-Funktion '%s' wurde nicht expandiert, weil ihre Unit '%s' nicht in der USES-Anweisung des IMPLEMENTATION-Abschnitts angegeben ist und die aktuelle Funktion eine Inline-Funktion ist

Der schöne Günther 19. Dez 2016 10:23

AW: Inline-Warnung die ich nicht verstehe
 
Ich danke.

Ganz hochoffiziell ein Doku-Bug-Report:
https://quality.embarcadero.com/browse/RSP-16573

himitsu 19. Dez 2016 10:30

AW: Inline-Warnung die ich nicht verstehe
 
Es soll heißen dass nichts inline irgendwo eingebunden werden kann, wenn an dieser Stelle nicht auf alles in dieser Funktion benutzte zugegriffen werden kann.

Das gilt für Variablen/Typen/Funktionen aus anderen Units (hier Math), welche nicht in der aufrufenden Unit eingebunden sind,
aber auch für z.B. Variablen/Typen/Funktionen, welche nach Implementation deiner Unit10 steht.

bra 19. Dez 2016 12:49

AW: Inline-Warnung die ich nicht verstehe
 
Das englische Original klingt aber auch irgendwie seltsam:

Zitat:

H2445 Inline function '%s' has not been expanded because its unit '%s' is specified in USES statement of IMPLEMENTATION section and current function is inline function or being inline function


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz