AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

"In" abfrage für negative Zahlen??

Ein Thema von gizzy · begonnen am 5. Sep 2008 · letzter Beitrag vom 6. Sep 2008
Antwort Antwort
Seite 2 von 2     12   
Dax
(Gast)

n/a Beiträge
 
#11

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

  Alt 6. Sep 2008, 00:42
Zitat von Die Muhkuh:
Warum ohne const? Spielt doch hier weniger eine Rolle?
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.
  Mit Zitat antworten Zitat
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
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:56 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