Mit C++ Bibliothek in C-code

Ich habe eine C++ - Bibliothek, stellt verschiedene Klassen zur Verwaltung von Daten. Ich habe den Quellcode für die Bibliothek.

Möchte ich erweitern die C++ - API zur Unterstützung von C-Funktionsaufrufen so, dass sich die Bibliothek kann mit C-code und C++ - code zur gleichen Zeit.

Ich bin mit der GNU-toolchain (gcc, glibc usw.), also Sprache und Architektur-Unterstützung sind nicht ein Problem.

Gibt es irgendwelche Gründe, warum dies technisch nicht möglich?

Gibt es gotcha ist muss ich achten?

Gibt es Ressourcen, Beispiel-code und/oder Dokumentation in Bezug auf diese?


Einige andere Dinge, die ich herausgefunden habe:

  1. Folgenden verwenden, wickeln Sie Ihre C++ - Header, die verwendet werden müssen, die von C-code.
#ifdef __cplusplus
extern "C" {  
#endif  
// 
//Code goes here ...  
// 
#ifdef __cplusplus  
} //extern "C"  
#endif
  1. Halten "echte" C++ - interfaces in separate header-Dateien, die nicht Bestandteil von C. Denke PIMPL Prinzip hier. Mit #ifndef __cplusplus #error Zeug hilft hier zu erkennen, keine Verrücktheit.
  2. Vorsichtig von C++ - Bezeichner als Namen in C-code
  3. Enumerationen, die unterschiedlich in der Größe zwischen C-und C++ - Compiler. Wahrscheinlich kein Problem wenn Sie mit GNU tool chain, aber dennoch vorsichtig sein.
  4. Für Strukturen befolgen Sie das folgende Formular, damit C nicht verwirrt.

    typedef struct X { ... } X
  5. Dann verwenden Sie die Zeiger für die Weitergabe um C++ - Objekte, Sie müssen nur deklariert werden, die in C als struct X, wobei X die C++ - Objekt.

All dies ist mit freundlicher Genehmigung von einem Freund, der ist ein Zauberer C++.

Schreibe einen Kommentar