statisch vs extern "C" / "C ++"

Was ist der Unterschied zwischen einer statischen member-Funktion und eine extern "C" linkage-Funktion ? Zum Beispiel, wenn Sie mit "makecontext" in C++, muss ich übergeben Sie einen Zeiger auf die Funktion. Google empfiehlt die Verwendung von extern "C" Verknüpfung für Sie, weil "makecontext" ist C. Aber ich fand heraus, dass die Verwendung von statischen als gut funktioniert. Bin ich einfach nur Glück oder...

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: Kann Sie zeigen ein compiler oder Architektur, wo die statischen member-version nicht funktioniert (und es ist kein bug im compiler) ?

InformationsquelleAutor der Frage Giovanni Funchal | 2009-02-26

Schreibe einen Kommentar