c++ c calling-convention nomenclature cdecl

c++ - ¿Qué significa "cdecl"?



calling-convention nomenclature (4)

Sí, sé que "cdecl" es el nombre de una convención de llamadas prominente, así que no me explique las convenciones de llamadas. Lo que pregunto es qué significa realmente la abreviatura (?) "Cdecl". Creo que es una mala elección de nombres, porque a primera vista nos recuerda a uno de "C declarator" (un aspecto sintáctico bastante único de C). De hecho, existe un programa llamado cdecl cuyo único propósito es descifrar los declaradores C. Pero la sintaxis del declarador C no tiene absolutamente nada que ver con convenciones de llamada, por lo que puedo decir.

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


Declaración de C. Una declaración introducida por / para C.

[editar]

Honestamente, debo admitir que en realidad no sé si eso es lo que significa, aunque en realidad es introducido por / para C. Pero dado que la caller tiene que limpiar la memoria asignada (a diferencia de la mayoría de las demás convenciones de llamadas). También podría ser un mnemotécnico para "El que llama termina la limpieza", lo que creo que en realidad es una buena ayuda para la memoria. :RE


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

No tiene que ser una abreviatura para algo que combina "C" y "declaración"; Los nombres son solo nombres, especialmente en programación. Mnemonics ayuda, pero aunque "malloc" significa "asignar memoria", tiene un significado adicional que conocemos y adjuntamos a ella; "alloca" también "asigna memoria", por ejemplo.

O tome "struct" que "significa" una "estructura", pero la "estructura" es tan genérica en sí misma que sin el significado que le asignamos inconscientemente a "struct" nos perderíamos irremediablemente, ya que los nuevos programadores que aún están aprendiendo la terminología a menudo se pierden .


Viene de la función C que fue declarada (en contraste con una función C que no fue declarada que era común en K&R C).

En el momento en que coexistía con la convención de llamadas de pascal (donde la persona que recibe la llamada limpiaba la pila), tenía sentido llamarla después del lenguaje de programación.

Todo lo que siempre querrás saber sobre las convenciones de llamadas.


Actualizado, lo he revisado totalmente, después de los comentarios que señalaban lo equivocada que estaba. cdecl significa que esta función usa la misma convención de llamada que utilizan las funciones de C extern "C" significa, además, que el nombre de la función no debe sufrir el nombre de C++ .

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