在ABI边界(现代C++)的可移植性

在二进制接口边界处使用足够的可移植的类型和约定。 "可移植类型"是 C 的内置类型或包含仅 C 内置类型的结构。 调用方和被调用方同意在布局上,调用约定,等等时,可以只使用类类型.这种情况只有两个具有相同的编译器和编译器设置在编译时。

要平面化的类 C 可移植性的方法

当调用方可能会用另一种编译器/语言) 进行编译时,然后"拼合"到"外部 C"API 具有特定的调用约定:

// 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++库参考