estático vs externo "C" / "C ++"

¿Cuál es la diferencia entre una función miembro estática y una función de enlace "C" externa? Por ejemplo, cuando uso "makecontext" en C ++, necesito pasar un puntero para funcionar. Google recomienda usar el enlace externo "C" para él, porque "makecontext" es C. Pero descubrí que usar estática también funciona. ¿Solo tengo suerte o ...

class X {
   public:
   static void proxy(int i) {}
}
makecontext(..., (void (*)(void)) X::proxy, ...);

vs

extern "C" void proxy(int i) {}
makecontext(..., (void (*)(void)) proxy, ...);

EDIT: ¿Puede mostrar un compilador o una arquitectura donde la versión miembro estática no funciona (y no es un error en el compilador)?

Respuestas a la pregunta(5)

Su respuesta a la pregunta