Переносимость на границах ABI
Используйте достаточно переносимые типы и соглашения в границах двоичного интерфейса. Переносимый тип — это встроенный тип C или структуру, которая содержит только встроенные типы C. Типы классов можно использовать только в том случае, если вызывающий и вызывающий согласны с макетом, соглашением о вызовах и т. д. Это возможно только в том случае, если оба компилируются с одинаковыми параметрами компилятора и компилятора.
Как располонить класс для переносимости C
Если вызывающие серверы могут компилироваться с другим компилятором или языком , то "плоская" в экстерн "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++
Кері байланыс
https://aka.ms/ContentUserFeedback.
Жақында қолжетімді болады: 2024 жыл бойы біз GitHub Issues жүйесін мазмұнға арналған кері байланыс механизмі ретінде біртіндеп қолданыстан шығарамыз және оны жаңа кері байланыс жүйесімен ауыстырамыз. Қосымша ақпаратты мұнда қараңыз:Жіберу және пікірді көру