Pregunta

Sí, sé que "cdecl" es el nombre de una convención de llamadas destacada, así que no me expliques las convenciones de llamadas.Lo que pregunto es qué significa realmente la abreviatura (?) "cdecl".Creo que es una mala elección de nombre, porque a primera vista recuerda al "declarador de C" (un aspecto sintáctico bastante singular de C).De hecho, existe un programa llamado cdecl cuyo único propósito es descifrar los declaradores C.Pero, hasta donde yo sé, la sintaxis del declarador de C no tiene absolutamente nada que ver con llamar a convenciones.

Versión simplificada:"stdcall" significa "convención de llamadas estándar".¿Qué significa "cdecl"?

¿Fue útil?

Solución

estás leyendo demasiado en esto.Representa la convención de llamadas de la implementación para llamar a las funciones de C en general (pero especialmente importante con varargs).

No tiene que ser una abreviatura de algo que combina "C" y "Declaración";Los nombres son solo nombres, especialmente en la programación.La ayuda de los mnemónicos, pero a pesar de que "malloc" significa "asignar memoria", tiene un significado adicional que conocemos y le adjuntamos;"Alloca" también "asigna memoria", por ejemplo.

o tome "struct" que "significa" una "estructura", pero "estructura" es tan genérica por sí misma que sin el significado que adjuntamos subconscientemente a "struct" nos perdimos desesperadamente, ya que los nuevos programadores siguen aprendiendo la terminologíaa menudo se pierden

Otros consejos

proviene de la función C que se declaró (en contraste con una función C que no se declaró que era común en K & R c).

En el momento en que se convirtió en convivencia con la Convención de Llamadas Pascal (¿dónde se aclaró el callee la pila), por lo que tiene sentido llamarlo después del lenguaje de programación?

todo lo que quizás quiera saber sobre las convenciones de llamadas.

Declaración C.Una declaración presentada por/para C.

[editar]

Honestamente, tengo que admitir que en realidad no sé si eso es lo que significa, aunque en realidad fue introducido por/para C.Pero desde el caller tiene que limpiar la memoria asignada (a diferencia de la mayoría de las otras convenciones de llamadas).También podría ser un mnemotécnico para "La persona que llama finaliza la limpieza", que creo que en realidad es una buena ayuda para la memoria.:D

Actualizado Lo revisé por completo, después de que los comentarios señalaran lo equivocado que estaba. cdecl significa que esta función utiliza la misma convención de llamada que C uso de funciones. extern "C" significa, además, que el nombre de la función no debe sufrir C++ alteración de nombres.

En cuanto a por qué se llama cdecl, no sé nada más.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top