__cdecl

Específicos de Microsoft

Ésta es la convención de llamada predeterminada de los programas de c y C++.Porque la pila es modificada la por el llamador, puede realizar funciones de vararg .La convención de llamada de __cdecl crea archivos ejecutables mayores que __stdcall, porque requiere cada llamada de función incluir código de limpieza de la pila.La lista siguiente se muestra la aplicación de esta convención de llamada.

Elemento

Implementación

el Argumento-pasar orden

De derecha a izquierda

responsabilidad de Pila-mantenimiento

La función de llamada extrae los argumentos de la pila

convención de la Nombre-decoración

El carácter de subrayado (_) se prefija los nombres, excepto al exportar el __cdecl funciona ese vinculación c de uso.

convención de la Caso-traducción

Ninguna traducción de caso realizada

[!NOTA]

Para obtener información relacionada, vea Nombres representativos.

En la familia de procesadores Itanium (IPF) y procesadores x64, __cdecl es aceptado y pasa por el compilador; en IPF, por convención, los parámetros se pasan en el registro.

Coloque el modificador decdecl de antes de una variable o un nombre de función.Debido a que los nombres y las convenciones de llamada de C son el valor predeterminado, la única vez que necesita utilizar elcdecl es cuando se ha especificado la opción de compilador /Gz (stdcall) o /Gr (/ox).La opción del compilador /Gd fuerza la convención de llamada de __cdecl .

Para las funciones de clase no estáticas, si la función está fuera-de-línea definido, el modificador de la convención de llamada no tiene que especificarse en la definición fuera-de-línea.Es decir, para los métodos no estáticos de miembro de clase, se supone que la convención de llamada especificada durante la declaración actualmente la definición.Con esta definición de clase,

struct CMyClass {
   void __cdecl mymethod();
};

this

void CMyClass::mymethod() { return; }

es equivalente a esto

void __cdecl CMyClass::mymethod() { return; }

Ejemplo

En el ejemplo siguiente, indican al compilador que utilizar nombres y las convenciones de llamada de c de la función de system :

// Example of the __cdecl keyword on function
int __cdecl system(const char *);
// Example of the __cdecl keyword on function pointer
typedef BOOL (__cdecl *funcname_ptr)(void * arg1, const char * arg2, DWORD flags, ...);

Vea también

Referencia

El paso y convenciones de nomenclatura de argumento

Palabras clave de C++