Portabilidade os limites de ABI (modernos C++)
Use tipos suficientemente portátil e convenções nos limites da interface binária."Tipo portátil" é um tipo interno c ou uma estrutura que contém somente tipos internos C.Tipos de classe só podem ser usados quando o chamador e o receptor concordam em layout, chamando convenção etc. isso só é possível quando ambos são compilados com o mesmo compilador e configurações do compilador.
Como Nivelar uma classe para portabilidade c
Quando chamadores podem ser compilados com outro compilador/idioma, em seguida, "Mesclar" para uma API "extern C" com uma convenção de chamada 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”
}