Condividi tramite


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”
}

Vedere anche

Altre risorse

Digitare di nuovo a C++ (C++ moderno)

Riferimenti al linguaggio C++

Riferimento della libreria C++ standard