Portabilità in base ai limiti ABI (C++ moderno)
Tipi sufficiente portabili e di utilizzo convenzioni i limiti binari dell'interfaccia. Un "tipo" è portabile tipo incorporato c o una struttura che contiene solo i tipi incorporati C. I tipi di classe possono essere utilizzati solo quando il chiamante e il chiamato aderiscono in layout, nella convenzione di chiamata, e così via. Questa operazione è possibile solo quando entrambi vengono compilati con lo stesso compilatore e le impostazioni del compilatore.
Come appiattire una classe per la portabilità C
Quando i chiamanti possono essere compilati con un altro compilatore/linguaggio, è "" appiattire un "C" extern API con una convenzione di chiamata specifica:
// 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”
}