Portabilidad en ABI Boundaries (C++ moderno)
Utilizar las convenciones y tipos suficientemente portátiles en los límites de la interfaz binaria.Un "tipo portátil" es un tipo integrado en c o una estructura que contiene sólo tipos integrados C.Los tipos de clase sólo pueden utilizarse cuando el llamador y destinatario acuerdan sobre diseño, llamar a la convención, etc.. esto sólo es posible cuando ambos se compilan con el mismo compilador y la configuración del compilador.
Cómo acoplar una clase para la portabilidad c
Cuando los llamadores pueden compilarse con otro compilador y el idioma, a continuación, "acoplar" a una API "extern C" con una convención de llamada específica:
// 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”
}