Andreas schrieb:
> ist. Zu Testzwecken habe ich ein kleines main geschrieben:
> #include <test_cpp.h>
>
> int main(void){
>
> int result = TEST::number;
C kennt keine Namespaces, also kann die obige Zeile nicht funktionieren.
> }
> dazu die "Library" test_cpp.h:
> #ifdef __cplusplus
Die obige Zeile sagt, daß alles bis zum #endif von einem C-Compiler
ignoriert werden soll.
> namespace TEST {
>
> int number = 4;
>
> }
>
> #endif
Andreas schrieb:
> Jim, danke für die prompte Antwort.
>
> Diesen Versuch habe ich bereits vorgenommen. Die Umbenennung in .cpp
> bringt jedoch nichts, auch nicht wenn das Header file in .cpp benennt
> wird.
Warum nicht? Was passiert denn?
> Lasse ich "#ifdef __cplusplus" weg, kennt der Compiler nicht mal das
> Schlüsselwort "namespace".
Er kennt es auch so nicht. In C gibt es nunmal kein Schlüsselwort namens
"namespace". Durch das #ifdef schmeißt der Präprozessor es halt raus, so
daß der eigentliche Compiler es gar nicht mehr zu Gesicht bekommt.
Wenn du unbedingt C++-Code von C aus nutzen willst, lässt sich das nur
über in C++ geschriebene Wrapper machen, die nach außen hin ein reines
C-Interface anbieten. Je nach Umfang der Biblothek und des Programms
kann es da einfacher sein, wie vorgeschlagen, dein ganzes C-Programm als
C++ zu übersetzen, da C größtenteils ein Subset von C++ ist und sich
meist mit nur wenigen Änderungen auch als C++ übersetzen läßt.