
Envoyé par
Aide delphi
Conventions d'appel
Dans la déclaration d'une procédure ou d'une fonction, vous pouvez spécifier une convention d'appel en utilisant l'une des directives register, pascal, cdecl, stdcall et safecall. Par exemple,
function MyFunction(X, Y: Real): Real; cdecl;
Les conventions d'appel déterminent l'ordre dans lequel les paramètres sont transmis à la routine. Elles affectent également la suppression des paramètres de la pile, l'utilisation de registres pour transmettre les paramètres, ainsi que la gestion des erreurs et des exceptions. register est la convention d'appel par défaut.
Les conventions register et pascal transmettent les paramètres de gauche à droite ; c'est-à-dire que le paramètre de gauche est évalué et transmis en premier, le paramètre de droite est évalué et transmis en dernier. Les conventions cdecl, stdcall et safecall transmettent les paramètres de droite à gauche.
Pour toutes les conventions à l'exception de cdecl, les procédures et fonctions suppriment les paramètres de la pile lors de la sortie. Avec la convention cdecl, c'est à l'appelant de supprimer les paramètres de la pile au retour de l'appel.
La convention register utilise jusqu'à trois registres de la CPU pour transmettre des paramètres alors que toutes les autres conventions transmettent tous les paramètres dans la pile.
La convention safecall implémente les 'coupe-feu' d'exceptions. Sous Win32, cela implémente la notification d'erreurs COM interprocessus.
Le tableau suivant résume les caractéristiques des conventions d'appel.
Partager