Поделиться через


Переносимость в диапазоне (ABI самомоднейшем C++)

Используйте достаточно переносимые типы и соглашения на границах двоичный интерфейс.«Переносимый тип» — C встроенного типа или структуры, который содержит только c встроенных типов.Типы классов может использоваться, только когда вызывающий и вызываемый объекты согласиться на макет, вызов соглашение и т. п. это возможно только если оба компилируются с помощью того же компилятора и параметры компилятора.

Как одноуровневые класс c переносимости

Когда вызывающие объекты могут быть скомпилированы с язык компилятора, затем «сведение» к API "extern" C "с определенным соглашением о вызове:

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

См. также

Другие ресурсы

Добро пожаловать в C++ (современные C++)

Справочник по языку C++

Справочник по стандартной библиотеки C++