다음을 통해 공유


ABI 경계의 이식성

이진 인터페이스 경계에서 충분히 이식 가능한 형식 및 규칙을 사용합니다. "이식 가능한 형식"은 C 기본 제공 형식 또는 C 기본 제공 형식만 포함하는 구조체입니다. 클래스 형식은 호출자와 호출자가 레이아웃, 호출 규칙 등에 동의하는 경우에만 사용할 수 있습니다. 이는 둘 다 동일한 컴파일러 및 컴파일러 설정으로 컴파일되는 경우에만 가능합니다.

C 이식성을 위해 클래스를 평면화하는 방법

호출자가 다른 컴파일러/언어로 컴파일될 수 있는 경우 특정 호출 규칙을 사용하여 extern "C" API로 "평면화"합니다.

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

참고 항목

C++ 시작하기
C++ 언어 참조
C++ 표준 라이브러리