Temporaere Groeßen...
-
Guten Tag,
W8031 "Temporaere Groeßen für Parameter ... verwendet" ist die Compiler-Warnung die meine Projekte desöfteren bei der Compilierung auswerfen.
Dies geschieht meist wenn Properties (diese borland spezifischen ersatzdinger für methoden) oder autmatisch konvertierte Objekte an Funktionen übergeben werden.Bsp:
func( TWinControlObj->Controls[1] );Wie kann man sowas verhindern / umgehen?
Kann mann die Compilierwarnung W8004 "... wurde ein Wert zugewiesen der nie verwendet wird" mit einer Compilieranweisung unterdrücken (hab oft Zeiger die ich aus Gewohnheit auf 0 setze auch wenn Sie nicht mehr verwendet werden)?Bis dann dann! :xmas2:
-
Hallo
aus der BCB-Hilfe zu der Warnung dazu:
(Die Kommandozeilenoption zur Unterdrückung dieser Warnung lautet = -w-lvc)
In C++ müssen sich Referenzvariablen oder -parameter auf ein Objekt desselben Typs beziehen.
Stimmen die Typen nicht überein, findet eine Zuweisung des aktuellen Wertes an eine temporäre Größe desselben Typs statt. Die Adresse der temporären Größe wird der Referenzvariable oder dem Referenzparameter zugewiesen.
Die Warnung zeigt, daß die Referenzvariable oder der Referenzparameter nicht auf das Erwartete, sondern auf eine temporäre Variable verweist, die sonst nicht benutzt wird.
Die BCB-Properties fallen unter diese Kategorie, da sie immer statt der echten internen Variable (so sie denn existiert) eine temporäre übergeben (ähnlich der Rückgabewert einer Funktion).
Es geht einfach raum, das ja als Parameter eine Referenz erwarten wird, auf die ein in der Funktion veränderter Wert nach der Funktion zurückgeschrieben werden kann. Bei temporären Wert ist das aber nicht möglich. Die Warnung sagt also : Die Funktion könnte den Parameter ändern, aber der neue Wert wird mit der temporären Umwandlung verworfen.bis bald
akari
-
W8031 (aus der BCB-Hilfe):
In C++ müssen sich Referenzvariablen oder -parameter auf ein Objekt desselben Typs beziehen.
Stimmen die Typen nicht überein, findet eine Zuweisung des aktuellen Wertes an eine temporäre Größe desselben Typs statt. Die Adresse der temporären Größe wird der Referenzvariable oder dem Referenzparameter zugewiesen.
Die Warnung zeigt, daß die Referenzvariable oder der Referenzparameter nicht auf das Erwartete, sondern auf eine temporäre Variable verweist, die sonst nicht benutzt wird.
W8004:
Die Variable erscheint in einer Zuweisung, wird jedoch in der eben endenden Funktion nirgendwo mehr verwendet.
Die Warnung erscheint nur, wenn der Compiler auf die abschließende Klammer trifft.
EDIT: Wieder mal zu langsam getippt.
