Przenośność na granicach ABI
Używaj wystarczająco przenośnych typów i konwencji w granicach interfejsu binarnego. "Typ przenośny" to wbudowany typ języka C lub struktura, która zawiera tylko wbudowane typy języka C. Typy klas mogą być używane tylko wtedy, gdy obiekt wywołujący i wywoływany zgadzają się na układ, konwencję wywoływania itp. Jest to możliwe tylko wtedy, gdy oba są kompilowane przy użyciu tych samych ustawień kompilatora i kompilatora.
Jak spłaszczać klasę pod kątem przenośności języka C
Gdy wywołujące mogą być kompilowane przy użyciu innego kompilatora/języka, następnie "spłaszczają" interfejs API "C" z konkretną konwencją wywoływania:
// 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"
}
Zobacz też
Witamy z powrotem w języku C++
Dokumentacja języka C++
Standardowa biblioteka C++
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla