Compartilhar via


Portabilidade em limites ABI (C++ moderno)

Use tipos suficientemente portáteis e convenções binários nos limites da interface. “Um tipo portátil” é do tipo interno c ou uma estrutura que contém apenas tipos internos do C. Os tipos da classe só podem ser usados quando o chamador e o destinatário concordam com o layout, chamando a convenção, etc. Isso só é possível quando ambos são compilados com o mesmo compilador e configurações do compilador.

Como mesclar uma classe para a portabilidade de C

Quando os chamadores podem ser compilados com outro compilador/idioma, então “mescle” a “C” 2.0 extern API com uma convenção específica de chamada:

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

Consulte também

Outros recursos

Bem-vindo ao C++ (C++ moderno)

Referência de linguagem C++

Referência da Biblioteca Padrão C++