Question

Oui, je sais que "CDECL" est le nom d'une convention d'appel proéminente, alors ne m'expliquez pas les conventions d'appel. Ce que je demande, c'est ce que représente l'abréviation (?) "CDECL". Je pense que c'est un mauvais choix de dénomination, car à première vue, cela rappelle un "Decarator C" (un aspect syntaxique plutôt unique de C). En fait, il y a un programme appelé CDECL dont le seul but est de déchiffrer les déclarateurs de C. Mais la syntaxe du Déclarateur C n'a absolument rien à voir avec les conventions d'appel pour autant que je sache.

Version simplifiée: "STDCALL" signifie "Convention d'appel standard". Que représente "CDECL"?

Était-ce utile?

La solution

Vous lisez trop à ce sujet. Il signifie la convention d'appel de la mise en œuvre pour appeler les fonctions C en général (mais particulièrement importante avec Varargs).

Il ne doit pas être une abréviation de quelque chose qui combine "C" et "Déclaration"; Les noms ne sont que des noms, en particulier dans la programmation. Les mnémoniques aident, mais même si "Malloc" signifie "allouer de la mémoire", il a une signification supplémentaire que nous connaissons et y attachons; "ALLOCA" "alloue également la mémoire", par exemple.

Ou prendre "struct" qui "signifie" une "structure", mais "structure" est si générique par elle-même que sans le sens, nous attachons inconsciemment à "structure", nous serions désespérément perdus - car de nouveaux programmeurs apprenant encore la terminologie sont souvent perdues .

Autres conseils

Il provient de la fonction C qui a été déclarée (contrairement à une fonction C qui n'a pas été déclarée courante dans K&R C).

À l'époque, il coexistait avec la convention d'appel Pascal (où la Callee a effacé la pile), il était donc logique de l'appeler après le langage de programmation.

Tout ce que vous pourriez vouloir savoir sur l'appel des conventions.

C Déclaration. Une déclaration introduite par / pour C.

Éditer

Honnêtement, je dois admettre que je ne sais pas vraiment si c'est ce qui représente, bien qu'il soit réellement introduit par / pour C. mais depuis le caller doit nettoyer la mémoire allouée (par opposition à la plupart des autres conventions d'appel). Cela pourrait également être un mnémonique pour «l'appelant met fin au nettoyage» qui, je pense, est en fait une bonne aide à la mémoire. :RÉ

Actualisé J'ai totalement révisé cela, après que les commentaires soulignaient à quel point j'étais faux. cdecl signifie que cette fonction utilise la même convention d'appel que C Fonctions Utilisation. extern "C" signifie en outre que le nom de la fonction ne doit pas subir C++ nom-mangeant.

Quant à pourquoi ça s'appelle cdecl, Je ne sais plus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top