Sdílet prostřednictvím


Přenositelnost u rozhraní ABI

Používejte dostatečně přenosné typy a konvence na hranicích binárního rozhraní. "Přenosný typ" je integrovaný typ jazyka C nebo struktura, která obsahuje pouze předdefinované typy jazyka C. Typy tříd lze použít pouze v případě, že volající a volaný souhlasí s rozložením, konvencí volání atd. To je možné pouze v případech, kdy jsou oba zkompilovány se stejnými nastaveními kompilátoru a kompilátoru.

Jak zploštět třídu pro přenositelnost jazyka C

Pokud je možné volající zkompilovat pomocí jiného kompilátoru nebo jazyka, "zploštět" na extern "C" rozhraní API s konkrétní konvencí volání:

// class widget {
//   widget();
//   ~widget();
//   double method( int, gadget& );
// };
extern "C" {        // functions using explicit "this"
   struct widget;   // opaque type (forward declaration only)
   widget* STDCALL widget_create();      // constructor creates new "this"
   void STDCALL widget_destroy(widget*); // destructor consumes "this"
   double STDCALL widget_method(widget*, int, gadget*); // method uses "this"
}

Viz také

Vítejte zpátky v C++
Referenční dokumentace jazyka C++
Standardní knihovna C++