Domanda

Sì, so che "CDECL" è il nome di una importante convenzione di chiamata, quindi per favore non spiegare chiamando le convenzioni per me.Quello che sto chiedendo è ciò che l'abbreviazione (?) "CDECL" è in realtà.Penso che sia una scelta di denominazione povera, perché a prima vista ricorda a uno dei "dichiaratore C" (un aspetto sintattico piuttosto unico di c).Infatti, c'è un programma chiamato CDECL il cui unico scopo è quello di decifrare i dichiaratori C.Ma la sintassi del dichiaratore C non ha assolutamente nulla a che fare con le convenzioni chiamando il più lontano possibile.

Versione semplificata: "Stdcall" si trova per "Convenzione di chiamata standard".Cosa significa "CDECL"?

È stato utile?

Soluzione

Stai leggendo troppo in questo.Sta per la Convenzione chiamante dell'attuazione per chiamare le funzioni C in generale (ma particolarmente importante con vargs).

Non deve essere un'abbreviazione per qualcosa che combina "c" e "dichiarazione";I nomi sono solo nomi, specialmente nella programmazione.I mnemonici aiutano, ma anche se "malloc" significa "allocare memoria", ha un ulteriore significato che lo conosciamo e attribuiamo ad esso;"Alloca" anche "alloca la memoria", ad esempio.

o prendere "struct" che "significa" una struttura ", ma" struttura "è così generico da solo che senza il significato ci fissiamo inconsciamente a" struct "saremmo irrimediabilmente persi - come nuovi programmatori imparando ancora la terminologiasono spesso persi.

Altri suggerimenti

Viene dalla funzione C dichiarata (in contrasto con una funzione C non dichiarata che era comune in K & R C).

Al momento della coesistenza con la Convenzione di chiamata Pascal (dove il Callee ha cancellato lo stack), quindi è stato il senso di chiamarlo dopo il linguaggio di programmazione.

Tutto ciò che potresti voler sapere sulle convenzioni di chiamata.

C Dichiarazione.Una dichiarazione introdotta da / per c.

[modifica]

Onestamente devo ammettere che non so in realtà se questo è ciò che è per, anche se è effettivamente introdotto da / per C. Ma poiché il caller deve ripulire la memoria assegnata (al contrario della maggior parte delle altre convenzioni di chiamata).Potrebbe anche essere un mnemonico per 'chiamare la pulizia della fine' che penso sia in realtà un buon aiuto alla memoria.: D

Aggiornato Ho totalmente rivisto questo, dopo i commenti sottolineando quanto ero sbagliato.cdecl significa che questa funzione utilizza la stessa convenzione di chiamata che utilizzano le funzioni C.extern "C" significa, inoltre, che il nome della funzione non deve essere sottoposto a C++ Nome-Mangling.

Per quanto riguarda il motivo per cui si chiama cdecl, non ne so più.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top