Konventionen anrufen
Wenn Sie ein Verfahren oder eine Funktion deklarieren, können Sie einen der folgenden Indikatoren verwenden, um die Aufrufkonvention anzugeben: Register, Pascal, CDECL, STDCall und SafeCall. Zum Beispiel,
Funktion myfunction (x, y: real): real;
...
Aufrufen von Konventionen bestimmen die Reihenfolge, in der Parameter an Routinen übergeben werden, und beeinflussen auch die Verwendung von Registern beim Löschen von Parametern aus dem Stapel, der Übergabe von Parametern sowie beim Fehler und der Ausnahmeregelung. Die Standardanrufkonvention ist Register.
• Registrieren Sie die Pascal -Anrufe von links nach rechts, dh die größten Parameter links werden frühestens berechnet und werden schließlich berechnet und übergeben.
• Zusätzlich zu CDECL -Aufrufen, Prozeduren und Funktionen entfernen die Parameter aus dem Stapel vor der Rückkehr, während CDECL bei der Rückgabe des Anrufs die Parameter aus dem Stapel entfernt.
• Registrierungsaufrufe können Parameter mit bis zu 3 CPU -Registern übergeben, während andere Aufrufe mit dem Stapel die Parameter übergeben.
• Der SafeCall-Aufruf implementiert die Ausnahme "Firewall", die die Com-Fehlerbenachrichtigung unter Windows implementiert.
Die folgende Tabelle fasst die Anrufkonventionen zusammen:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------
-Indicator Wörter ------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---? |
-register --------------- links nach rechts --------- Routine ------------------ Ja ---------------------- ||
-Pascal --------------- links nach rechts --------- Routine ----------------- Nein -------------------------- |
-cdecl ----------------- rechts nach links --------- Anrufer ---------------- --- Nein ---------------------------- |
-Stdcall ---------------- rechts nach links ---------- Routine ---------------- --- Nein -------------------------- |
-Safecall --------------- Recht nach links ---------- Routine ----------------- --- Nein ---------------------- |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------
Der Standard -Registeranruf ist am effizientesten, da er normalerweise ein Stapelrahmen erstellt (ein Register muss beim Zugriff auf veröffentlichte Eigenschaften verwendet werden). STDCall und SafeCall werden empfohlen. In Windows verwendet die System -API STDCall und SafeCall, während andere Betriebssysteme normalerweise CDEC verwenden (beachten Sie, dass STDCall effizienter ist als CDECL).
Methoden, die Dual -Schnittstellen deklarieren, müssen SafeCall verwenden. Weitere Informationen zur Anrufkonvention finden Sie in der Programmsteuerung.
Indikatoren in der Nähe, weit und exportieren werden in einer 16-Bit-Windows-Programmierung verwendet, und sie haben keinen Einfluss auf 32-Bit-Programme, und sie werden für die Rückwärtskompatibilität beibehalten.