El código de muestra que muestra cómo crear subprocesos utilizando MFC declara la función de subproceso como estática y __cdecl
. ¿Por qué se requiere esto último? Los hilos Boost no se molestan con esta convención, ¿entonces es solo un anacronismo?¿Por qué las funciones de subprocesos deben declararse como '__cdecl'?
Por ejemplo (MFC):
static __cdecl UINT MyFunc(LPVOID pParam)
{
...
}
CWinThread* pThread = AfxBeginThread(MyFunc, ...);
Mientras Boost:
static void func()
{
...
}
boost::thread t;
t.create(&func);
(los ejemplos de código pueden no ser 100% correcto ya que estoy muy lejos de un IDE).
¿Cuál es el punto de __cdecl? ¿Cómo ayuda cuando se crean subprocesos?
Boost no considera convención de llamadas. Esta no es una función de nivel de idioma (más una función de nivel de Enlazador). MS lo usa para compatibilidad con versiones anteriores del código. –
Loki tiene la mejor respuesta – SChalice