Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#12

Re: "In" abfrage für negative Zahlen??

  Alt 6. Sep 2008, 10:44
Zitat von Dax:
Mit const behandelt der Compiler die Parameter wie Zeiger, also müssen die paar Ints definitiv auf den Stack. Sonst könnte ja auch kein Zeiger darauf übergeben werden... was aber unnötig ist, da Ints sowieso keine Referenztypen sind.
Das ist so nicht ganz richtig. Einfache Daten (Boolean, Integer,...) werden auch bei Verwendung der Direktive const in Registern übergeben, sofern freie Register zur Verfügung stehen und die Routine nicht mit einer Direktive wie cdecl gekennzeichnet wurde. Die letzte Entscheidung trifft der Compiler, und ihm kann man es durch const ermöglichen, Optimierungen vorzunehmen. Der Compiler kann dann - wie übrigens der Programmierer auch - sicher sein, dass die betreffende Variable während der gesamten Laufzeit der Routine den übergebenen Wert enthält. Ohne const besteht die Gefahr, dass die Variable (vielleicht unbeabsichtigt) verändert wird. Bei einer späteren Modifikation des Codes übersieht man dies und nimmt an, dass sich noch der übergebene Wert darin befindet...

Das von dir angesprochene Zeigerproblem ist eigentlich gar keins. Wenn der Compiler feststellt, dass Zeiger auf die (in Registern übergebenen) Daten benötigt werden, erzeugt er für die aufgerufene Routine einen Initialisierungscode, der die Werte auf dem Stack ablegt.

Gruß Hawkeye
  Mit Zitat antworten Zitat