Переносимость в диапазоне (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”
}