__thiscall

Específicos de Microsoft

Utilizan en funciones miembro y es la convención de llamada la convención de llamada de __thiscall predeterminada utilizada por las funciones miembro de C++ que no utilizan argumentos variables.En __thiscall, el destinatario limpia la pila, que es imposible para las funciones de vararg .Los argumentos se insertan en la pila de derecha a izquierda, con el puntero de this que se pasa a través del registro ECX, y no en la pila, en la arquitectura x86.

Una razón para utilizar __thiscall está en las clases cuyas funciones miembro utilizan __clrcall de forma predeterminada.En ese caso, puede utilizar __thiscall para crear funciones miembro individual accesibles desde código nativo.

Al compilar con /clr: puro, todas las funciones y punteros a función son __clrcall a menos que se especifique lo contrario.

En versiones anteriores de Visual C++ 2005, la convención de llamada thiscall no se puede especificar explícitamente en un programa, porque thiscall no es una palabra clave.

las funciones miembro devararg usan la convención de llamada de __cdecl .Todos los argumentos de la función se insertan en la pila, con el puntero de this colocado en la última de la pila

Dado que esta convención de llamada sólo se aplica a C++, no hay ningún esquema de la decoración de nombres de C.

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

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.

Ejemplo

// thiscall_cc.cpp
// compile with: /c /clr:oldSyntax
struct CMyClass {
   void __thiscall mymethod();
   void __clrcall mymethod2();
};

Vea también

Referencia

El paso y convenciones de nomenclatura de argumento