Pregunta

Ok voy a dar dos ejemplos de función se utilizan CALLBACK y función normal.
Nota:. No he escrito estos ejemplos

Función regular

int sumExample (int a, int b)
{
    return a + b;
}
int main()
{
     int = sumExample(1, 3);
     cout  >> int;
     return 0;
}

Función usando _stdcall

int __stdcall sumExample (int a, int b);

¿cuál es la diferencia?
Nota: No estoy seguro de cómo funciona convenciones de llamada, un ejemplo sería ayudar

!
¿Fue útil?

Solución

Básicamente, una convención de llamada especifica los detalles de implementación de cómo la función se llamará. La mayoría de las bibliotecas utilizan la convención de llamada estándar C - __cdecl. Sin embargo WinAPI espera __stdcall. Sólo es necesario saber dos cosas acerca de convenciones de llamada: que tienen que coincidir, por ejemplo, no se puede convertir un void(*)(int, int), que es implícitamente una void(__cdecl *)(int, int), a un void(__stdcall *)(int, int), y que el valor predeterminado es __cdecl. CALLBACK es sólo un #define WinAPI para que puedan cambiar si así lo desean.

Otros consejos

No mucho, la verdad. Un "devolución de llamada" es un nombre dado a una función para pasar a otra función que va a "llamar de nuevo" cuando ... sucede algo útil. No hay razón para que no se puede utilizar también como función regular sin embargo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top