__thiscall
La convención de llamada específica de Microsoft__thiscall
se usa en funciones miembro de clase de C++ en la arquitectura x86. Es la convención de llamada predeterminada que emplean las funciones miembro que no usan argumentos de variable (funciones vararg
).
En __thiscall
, el destinatario limpia la pila, lo que es imposible para las funciones vararg
. Los parámetros se insertan en la pila de derecha a izquierda. El puntero this
se pasa a través del registro ECX y no en la pila.
En equipos ARM, ARM64 y x64, el compilador acepta y omite a __thiscall
. Esto se debe a que usan una convención de llamada basada en registros predeterminados.
Un motivo para usar __thiscall
son las clases cuyas funciones miembro usan __clrcall
de forma predeterminada. En ese caso, puede usar __thiscall
para crear funciones miembro individuales que se puedan llamar desde código nativo.
Al compilar con /clr:pure
, todas las funciones y los punteros a función son __clrcall
a menos que se especifique lo contrario. Las opciones del compilador /clr:pure
y /clr:safe
han quedado en desuso en Visual Studio 2015 y no se admiten en Visual Studio 2017.
Las funciones miembro vararg
usan la convención de llamada __cdecl
. Todos los argumentos de función se insertan en la pila, colocándose el puntero this
en el último lugar de la pila.
Como esta convención de llamada solo se aplica a C++, no tiene ningún esquema de decoración de nombres de C.
Al definir una función miembro de clase no estática fuera de línea, especifique el modificador de convención de llamada solo en la declaración. No es necesario volver a especificarlo en la definición fuera de línea. El compilador usa la convención de llamada especificada durante la declaración en el punto de definición.
Consulte también
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de