Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ... (https://www.delphipraxis.net/193282-inline-funktion-wurde-nicht-expandiert-weil-unit-der-uses-liste.html)

Glados 11. Jul 2017 20:04

Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Leider ist mir kein besserer Titel eingefallen!

Ich habe eine Unit1 mit einer Klasse und einer darin befindlichen Deklaration für eine Inline-Funktion.
Diese Funktion verwende ich in Unit2.

In Unit2 steht in der Uses-Klausel selbstverständlich Unit1 und trotzdem erhalte ich diesen Hinweis vom Compiler.

Was möchte der Compiler von mir? Die Unit steht doch schon in der Uses-Klausel!

himitsu 11. Jul 2017 20:08

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
IN der Funktion, die geinlinet werden soll, ist etwas, dass läßt sich nicht an die Aufrufstelle verschieben.

z.B. eine Variable/Konstante/Typ/Funktion, welche nicht von deiner Stelle aus "sichtbar" ist.

Ist Dieses in der "Implementation" der Unit1 drin, dann geht das nicht (oder du mußt es so verschieben, dass es auch in Unit2 sichtbar wird)
oder kommt es aus Unit3 (in Unit1 eingebunden), dann mußt du in Unit2 auch die Unit3 einbinden.

Glados 11. Jul 2017 20:11

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Wenn das so ist:

ich habe eine Unit mit globalen Variablen drin.
Diese Variablen rufe ich in der Funktion ab.

himitsu 11. Jul 2017 20:12

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Tja, dann passt es doch.
Zitat:

kommt es aus Unit3 (in Unit1 eingebunden), dann mußt du in Unit2 auch die Unit3 einbinden.

Glados 11. Jul 2017 20:14

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Meinst du mit Unit3 meine unit mit den globalen Variablen drin?

Die Funktion holt sich zwei Konstanten aus meiner Globals-Unit und gibt diese Als Rückgabe zurück.
Hat so etwas überhaupt einen Vorteil durch die Nutzung von inline?

Der schöne Günther 11. Jul 2017 21:38

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Das ist ein bekannter Übersetzungsfehler, die deutsche Übersetzung der Compiler-Warnung ist falsch:

http://www.delphipraxis.net/191195-i...-verstehe.html

Glados 11. Jul 2017 21:52

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
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
Jetzt verstehe ich noch weniger.

Ich habe jetzt Unit welche die Globals enthält in Unit2 eingebunden und die Meldungen sind weg.
Wenn ich nur meine Unit1 einbinde, welche die Inline-Funktion enthält, bekomme ich die Meldung noch.

himitsu 11. Jul 2017 21:53

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Zitat:

Zitat von Glados (Beitrag 1376504)
Ich habe jetzt Unit welche die Globals enthält in Unit2 eingebunden und die Meldungen sind weg.

Also genau das, was ich oben geschrieben und dann nochmal zitiert hatte. :stupid:

Das, was die Funktion verwendet, muß auch dort verfügbar sein, wo es per inline hin soll.

Glados 11. Jul 2017 21:55

AW: Inline-Funktion .... wurde nicht expandiert, weil Unit ... in der USES-Liste ...
 
Zitat:

Das, was die Funktion verwendet, muß auch dort verfügbar sein, wo es per inline hin soll.
Jetzt hab ich's, danke.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:29 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