Sign in Join
Wiki copytemporary

Passing Pascal Types to C Routines/fr

English · Français

Problème

Un nombre de types Pascal standard n'pont pas d'équivalent en C. Néanmoins, on peut parfois souhaiter passer une variable d'un tel type à une routine C externe. La question est de savoir comment passer de telles variables à de telles routines, étant donné qu'il est impossible d'écrire un programme C équivalent pour vérifier ce que font les compilateurs C.

Nous devons donc définir nos propres standards, afin de nous assurer que les mêmes conventions sont suivies sur toutes les architectures supportées (ce qui n'était pas le cas au début de cet article). Notez que le tableau ci-dessous ne s'applique qu'aux fonctions déclarées comme "cdecl", les fonctions Pascal (peuvent) utiliser d'autres conventions d'appel.

Généralité

Type Comment il est passé en 2.0.2 Comment il est passé en 2.1.1+ Comment il est pourrait être passé Raisonnement
Shortstring P Par valeur sur x86, par référence partout ailleurs Par référence Par référence Les interfaces universelles d'Apple ont plusieurs routines qui attendent des chaînes Pascal comme paramètres de valeur. Ils sont déclarés comme des tableaux de caractères du côté C, qui doivent être passés par référence. Un inconvénient de les passer par référence est que la sémantique d'appel par valeur ne peut pas être garantie (c'est-à-dire que la routine C peut modifier la chaîne)
Petits ensembles (<= 32 éléments) Par valeur Par valeur Par valeur depuis que de tels ensemblesfont 4 octets de large, ça n'a pas de sens de les passer par référence
Grands ensembles (32 < x < 256 éléments) Par valeur sur x86, par référence partout ailleurs Par valeur sur x86, par référence partout ailleurs ? Un argument similaire aux shortstrings pourait être fait, en ce que l'équivalent C sera probablement un tableau. Dans les deux cas, cela devrait devenir pareil pour x86 et le reste.
Pointeur de méthode Par valeur sur x86, par référence partout ailleurs Par valeur sur x86, par référence partout ailleurs ? ? Devrait devenir identique sur x86 et le reste.

From the Free Pascal wiki, page "Passing Pascal Types to C Routines/fr", as it stood on 2022-04-30 after a change by E-ric, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.