Portabilità ai limiti di ABI (C++ moderno)
Utilizzare tipi sufficientemente portatili e le convenzioni di corrispondenza dei limiti di interfaccia binaria.Un tipo"portatile" è un tipo incorporato c o una struttura che contiene solo tipi incorporati C.I tipi di classe possono essere utilizzati solo quando il chiamante e chiamato concordano sul layout, convenzione di chiamata via. questo è possibile solo quando entrambe sono compilate con le stesso impostazioni del compilatore e del compilatore.
Come unire una classe per la portabilità c
Quando i chiamanti possono essere compilati con un altro compilatore/lingua, quindi "appiattire" a un'API "extern C" con una specifica convenzione di chiamata:
// class widget {
// widget();
// ~widget();
// double method( int, gadget& );
// };
extern “C” { // functions using explicit “this”
struct widget; // + opaque type (fwd decl only)
widget* STDCALL widget_create(); // ctor → create new “this”
void STDCALL widget_destroy( widget* ); // dtor → consume “this”
double STDCALL widget_method( widget*, int, gadget* ); // method → use “this”
}