Referenz - CDECL
Syntax: [DECLARE] {SUB | FUNCTION} prozedurname CDECL [evtl. weitere Angaben ...]
Typ: Schlüsselwort
Kategorie: Bibliotheken
Der Name der CDECL-Aufrufkonvention steht für C-DECLARE. Die Konvention wird von vielen C/C++ -Compilern verwendet, die auf der x86-Architektur laufen. Hierbei werden die Parameter nacheinander von rechts nach links ( <- ) auf den Stack gelegt.
Die aufgerufende Prozedur baut den Stack nicht selbst ab, sodass Prozeduren mit variabler Argumenten-Anzahl und -Länge realisiert werden können (siehe ... ). Der Stack muss nach dem Aufruf von der aufrufenden Prozedur bereinigt werden.
CDECL ist die Aufrufkonvention, die standardmäßig unter Linux, BSD und DOS verwendet wird, sofern keine andere Konvention explizit festgelegt oder durch einen EXTERN-Block impliziert wird.
Beispiel: Vergleich der verschiedenen Aufrufmöglichkeiten
Sub s StdCall (s1 As Integer, s2 As Integer)
Print "StdCall ", s1, s2
End Sub
Sub c Cdecl (c1 As Integer, c2 As Integer)
Print "Cdecl ", c1, c2
End Sub
Sub p Pascal (p1 As Integer, p2 As Integer)
Print "Pascal ", p1, p2
End Sub
Asm
push 2 '2. Parameter - s2
push 1 '1. Parameter - s1
Call s 'rechts nach links
push 2 '2. Parameter - c2
push 1 '1. Parameter - c1
Call c 'rechts nach links
Add esp, 8 'der Stack muss durch die aufrufende Funktion aufgeräumt werden
push 1 '1. Parameter - p1
push 2 '2. Parameter - p2
Call p 'links nach rechts
End Asm
Sleep
Unterschiede zu QB: neu in FreeBASIC
Siehe auch:
DECLARE, STDCALL, PASCAL, Module (Library / DLL)
Zusätzliche Informationen und Funktionen | ||||
---|---|---|---|---|
|