Optionen für Aufrufkonventionen (BCC32)
Nach oben zu BCC32: Der C++-Befehlszeilen-Compiler
Inhaltsverzeichnis |
Übersicht
Aufrufkonventionsoptionen teilen dem Compiler die zu erzeugende Aufrufabfolge für Funktionsaufrufe mit. Die Aufrufkonventionen C, Pascal und Register unterscheiden sich in den folgenden Punkten: Behandlung der Stack-Bereinigung, Reihenfolge von Parametern, Schreibweise und Präfix bei globalen Bezeichnern.
Der Standardaufrufkonvention des C++-Compilers lautet: C (-pc)
In C++Builder-Quelltext wird normalerweise die Standardaufrufkonvention C verwendet.
In der IDE können Sie die Aufrufkonvention für das Projekt mit der Option Projekt > Optionen > C++-Compiler festlegen.
Mit den folgenden Schlüsselwörtern können Sie die Standardaufrufkonvention für bestimmte Funktionen überschreiben:
MSVC __fastcall
Befehlszeilenoption: -pm
Diese Option teilt dem Compiler mit, die Aufrufkonvention __msfastcall für alle Funktionen einzusetzen, für die keine explizite Aufrufkonvention deklariert ist.
C
Befehlszeilenoption: -pc, -p-
Diese Option teilt dem Compiler mit, eine C-Aufrufsequenz für Funktionsaufrufe (Unterstriche generieren, Berücksichtigung von Groß- und Kleinschreibung, Parameter von rechts nach links verarbeiten) zu erzeugen. Diese Option hat denselben Effekt wie das Schlüsselwort __cdecl. Funktionen, die mit der Aufrufkonvention C deklariert sind, können eine variable Parameterliste entgegennehmen, das heißt, die Anzahl der Parameter muss nicht fest sein.
Mit den Schlüsselwörtern __pascal, __fastcall oder __stdcall kann eine Funktion oder eine Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.
Pascal
Befehlszeilenoption: -p
Diese Option teilt dem Compiler mit, eine Pascal-Aufrufsequenz für Funktionsaufrufe (keine Unterstriche, nur Großbuchstaben, Aufruffunktion bereinigt den Stack, Parameter von links nach rechts verarbeiten) zu erzeugen. Diese Option hat denselben Effekt wie das Schlüsselwort __pascal. Die resultierenden Funktionsaufrufe sind normalerweise kleiner und laufen schneller als die, die mit der Aufrufkonvention C (-pc) generiert wurden. Funktionen müssen Argumente immer mit passendem Typ und passender Anzahl übergeben.
Mit den Schlüsselwörtern __cdecl, __fastcall oder __stdcall kann eine Funktion oder eine Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.
Register
Befehlszeilenoption: -pr
Diese Option teilt dem Compiler mit, alle Unterroutinen und Funktionen mit der Register-Parameterübergabekonvention zu erzeugen. Dies hat denselben Effekt wie das Deklarieren aller Unterroutinen und Funktionen mit dem Schlüsselwort __fastcall. Wenn diese Option aktiviert ist, erwarten Funktionen und Routinen die Parameterübergabe in Registern.
Mit den Schlüsselwörtern __pascal, __cdecl oder __stdcall kann eine Funktion oder eine Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.
Standardaufruf
Befehlszeilenoption: -ps
Diese Option teilt dem Compiler mit, eine Stdcall-Aufrufsequenz für Funktionsaufrufe (keine Unterstriche, Schreibweise beibehalten, Ablegen aufgerufener Funktionen auf dem Stack, Ablegen der Parameter von rechts nach links) zu erzeugen. Diese Option hat denselben Effekt wie das Schlüsselwort __stdcall. Funktionen müssen Argumente immer mit passendem Typ und passender Anzahl übergeben.
Mit den Schlüsselwörtern __cdecl, __pascal oder __fastcall kann eine Funktion oder eine Unterroutine explizit mit einer anderen Aufrufkonvention deklariert werden.