Exportar (0) Imprimir
Expandir todo
Este artículo se tradujo de forma manual. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

Paso de argumentos y convenciones de nomenclatura

Específicos de Microsoft

Los compiladores de Visual C++ permiten especificar convenciones para pasar argumentos y valores devueltos entre funciones y llamadores. No todas las convenciones están disponibles en todas las plataformas compatibles y algunas convenciones utilizan implementaciones específicas de la plataforma. En la mayoría de los casos, se omiten palabras clave o modificadores de compilador que especifican una convención no compatible en una plataforma concreta y se usa la convención predeterminada de la plataforma.

En plataformas x86, todos los argumentos se amplían a 32 bits cuando se pasan. Los valores devueltos también se amplían a 32 bits y se devuelven en el registro EAX, salvo las estructuras de 8 bytes, que se devuelven en el par de registros EDX:EAX. Las estructuras de mayor tamaño se devuelven en el registro EAX como punteros a estructuras de devolución ocultas. Los parámetros se insertan en la pila de derecha a izquierda. Las estructuras distintas de POD no se devolverán en registros.

El compilador genera código de prólogo y epílogo para guardar y restaurar los registros ESI, EDI, EBX y EBP, si se usan en la función.

Nota Nota

Cuando se devuelve un struct, una unión o una clase desde una función por valor, todas las definiciones del tipo deben ser iguales; de lo contrario, se puede producir un error en el programa en tiempo de ejecución.

Para obtener información sobre la definición de código propio de epílogo y prólogo de la función, vea Llamadas a funciones naked.

Para obtener información sobre las convenciones de llamada predeterminadas en el código destinado a plataformas x64, vea Información general sobre las convenciones de llamada x64. Para obtener información sobre problemas de convención de llamada en código destinado a plataformas ARM, vea Problemas comunes de migración de ARM en Visual C++.

El compilador de Visual C/C++ admite las siguientes convenciones de llamada.

Palabra clave

Limpieza de la pila

Paso de parámetros

__cdecl

Llamador

Inserta parámetros en la pila, en orden inverso (de derecha a izquierda)

__clrcall

no disponible

Carga parámetros en la pila de expresiones CLR en orden (de izquierda a derecha).

__stdcall

Destinatario

Inserta parámetros en la pila, en orden inverso (de derecha a izquierda)

__fastcall

Destinatario

Almacenado en los registros y luego insertado en la pila

__thiscall

Destinatario

Insertado en la pila; puntero this almacenado en ECX

__vectorcall

Destinatario

Almacenado en registros y luego insertado en la pila en orden inverso (de derecha a izquierda)

Para obtener información relacionada, vea Convenciones de llamada obsoletas.

FIN de Específicos de Microsoft

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft