Portabilität an ABI-Grenzen
Verwenden Sie ausreichend tragbare Typen und Konventionen an binären Schnittstellengrenzen. Ein "portabler Typ" ist ein integrierter C-Typ oder eine Struktur, die nur integrierte C-Typen enthält. Klassentypen können nur verwendet werden, wenn Anrufer und Angerufene das Layout, die Anrufkonvention usw. zustimmen. Dies ist nur möglich, wenn beide mit denselben Compiler- und Compilereinstellungen kompiliert werden.
Wie man eine Klasse für C-Portabilität flachert
Wenn Aufrufer möglicherweise mit einem anderen Compiler/einer anderen Sprache kompiliert werden, wird eine externe "C"-API mit einer bestimmten Aufrufkonvention "flatten" :
// class widget {
// widget();
// ~widget();
// double method( int, gadget& );
// };
extern "C" { // functions using explicit "this"
struct widget; // opaque type (forward declaration only)
widget* STDCALL widget_create(); // constructor creates new "this"
void STDCALL widget_destroy(widget*); // destructor consumes "this"
double STDCALL widget_method(widget*, int, gadget*); // method uses "this"
}
Siehe auch
Willkommen zurück bei C++
C++-Programmiersprachenreferenz
C++-Standardbibliothek
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für