Condividi tramite


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

Vedere anche

Altre risorse

C++ (C++ moderno)

Riferimenti del linguaggio C++

Riferimento per la libreria standard C++