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"
}
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기