Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [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