Portabilidad en los límites de ABI (C++ moderno)
Tipos suficientemente portables en uso y convenciones de los límites binarios de la interfaz. Un “portable tipo” es tipo integrado de C/C++. o struct que sólo contiene tipos integrados de C. Los tipos de clase pueden utilizar solo cuando el llamador y el destinatario coinciden con diseño, la convención de llamada, etc. Esto sólo es posible cuando ambos se compilan con el compilador y las opciones del compilador.
Cómo aplanar una clase para la portabilidad de C
Cuando los llamadores pueden compilarse con otro compilador/lenguaje, después “quitar información de estructura jerárquica” a extern “C” API con una convención de llamada concreta:
// 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”
}