Sdílet prostřednictvím


Přenositelnost hranicím ABI (moderní C++)

Používáte a dostatečně přenosné typy binární rozhraní hranicím."Přenosný typ" je vestavěný typ c nebo struktura, která obsahuje pouze c předdefinované typy.Typy tříd můžete použít, pouze pokud volající a volaný dohodnout na rozložení volání úmluvy atd. to je možné pouze při obou zkompilována stejného kompilátoru a nastavení kompilátoru.

Jak sloučit třídy pro přenositelnost c

Pokud volající může kompilována s kompilátorem nebo jazyka, pak "sloučit" na rozhraní API "extern C" s konkrétní konvence volání:

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

Viz také

Další zdroje

Moderní Příručka programování v jazyce C++

C++ jazyková Reference

Referenční Standardní knihovna C++