Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - CDECL

Referenz-Navigation

 

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 Befehlsreferenzeintrag ... ). 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 BefehlsreferenzeintragEXTERN-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:
BefehlsreferenzeintragDECLARE, BefehlsreferenzeintragSTDCALL, BefehlsreferenzeintragPASCAL, BefehlsreferenzeintragModule (Library / DLL)


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 29.06.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 29.08.2012 von Redakteurnemored gespeichert.
  Versionen Versionen