Использование библиотеки C ++ в коде C

У меня есть библиотека C ++, которая предоставляет различные классы для управления данными. У меня есть исходный код для библиотеки.

Я хочу расширить API C ++ для поддержки вызовов функций C, чтобы библиотека могла использоваться одновременно с кодом C и кодом C ++.

Я использую цепочку инструментов GNU (gcc, glibc и т. Д.), Поэтому поддержка языка и архитектуры не проблема.

Есть ли причины, по которым этотехнически невозможно?

Есть лиГоча что мне нужно остерегаться?

Имеются ли ресурсы, пример кода и / или документация по этому вопросу?

Некоторые другие вещи, которые я обнаружил:

Используйте следующее, чтобы обернуть ваши заголовки C ++, которые должны использоваться кодом C.

#ifdef __cplusplus
extern "C" {  
#endif  
//  
// Code goes here ...  
//  
#ifdef __cplusplus  
} // extern "C"  
#endif
Храните «настоящие» интерфейсы C ++ в отдельных заголовочных файлах, которые не включены в C. ThinkПринцип PIMPL Вот. С помощью#ifndef __cplusplus #error вещи помогают здесь обнаружить любое сумасшествие.Осторожно идентификаторы C ++ как имена в коде CПеречисления, различающиеся по размеру между компиляторами C и C ++. Вероятно, не проблема, если вы используете цепочку инструментов GNU, но все же, будьте осторожны.

Для структур следуйте следующей форме, чтобы C не запутался.

typedef struct X { ... } X

Затем используйте указатели для передачи объектов C ++, их просто нужно объявить в C как struct X, где X - это объект C ++.

Все это любезно предоставлено другом, который является волшебником в C ++.

Ответы на вопрос(4)

Ваш ответ на вопрос