Hallo,
mein letztes Problem war durch doppelte Include-Files bedingt...
Yalu X. schrieb:
> Mir fällt nur eine einzige sinnvolle ein, nämlich die Funktionen callMe
> und meinCppLoop im C++-Teil als extern "C" zu deklarieren, damit callMe
> von C++ aus und meinCppLoop von C aus aufgerufen werden kann.
>
> Diese Deklarationen macht man am besten in entsprechenden Header-Files,
> die von beiden Teilen includet werden. Damit der C-Compiler nicht über
> das extern "C" stolpert, muss dieses für C mit #ifdef __cplusplus
> unsichtbar gemacht werden.
Ich mache das so in meinen Header-Dateien:
1 | #ifdef __cplusplus
|
2 | #define C_API extern "C"
|
3 | #else
|
4 | #define C_API
|
5 | #endif
|
6 |
|
7 | C_API void callMe(void);
|
1 | C_API void callMe(void){
|
2 | printf("Bier:gut);
|
3 | }
|
Ich bekomme aber folgende Fehlermeldung:
1 | header.h:53:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
|
Der Fehler wird geworfen, wenn eine C-Datei kompiliert wird, die
Header.h einbindet. callMe() wird in einer anderen C-Datei definiert.
Kann damit jmd etwas anfangen?