extern "C" error #2040: ein Bezeichner erwartet
Ich immer noch zu kämpfen, um zu kompilieren eine C Konsolen-Anwendung, die Kompiliervorgang immer noch nicht mit der folgenden Fehlermeldung:
"Main.c", line 51: error #2040: expected an identifier
extern "C" void TreatReceivedSignal( int NoSignal ) ;
^
1 error detected in the compilation of "Main.c".
gmake: *** [Main.o] Error 2
unter die Deklaration der externen Methode auf den C-code :
extern "C" void TreatReceivedSignal( int NoSignal ) ;
Ich bin mit HP-UX-aCC-compiler [HP C/aC++ B3910B A. 06.26], auch wechselte ich auf das compilation-flag -Ae zu aktivieren C99 unterstützen.
Scheint, dass der compiler kann nicht erkennen, das 'extern "C"' C reserviertes Wort ist, können einige andere compilation-flag gesetzt werden.
Jede Idee, bitte, können lösen dieser Art von Problem?
Vielen Dank im Voraus.
Hinsichtlich
C und C++ sind nicht ähnlich wie. Nicht behandeln Sie, als ob Sie sind. Lernen, oder lernen Sie die anderen. Nicht lernen Sie gleichzeitig. Nicht mit dem schreiben von C-code für den Zweck des seins "als kompilierbare C++". Es gibt viele Gründe, warum es eine schlechte Idee ist. Schreiben Sie in C, schreiben in C++. Wenn Sie C-code-um einen C++ - Projekt kompilieren von C-code mit einem C-compiler und nutzen Sie Ihre C++ - linker die Verknüpfung der Objekt-code.
InformationsquelleAutor jamel | 2013-04-24
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
extern "C"
Konstrukt ist eine C++ - spezifische Sache, kann es nicht verwendet werden, die in C. Und der compiler behandelt Sie Ihre Quell-Datei als C-Quellcode-Datei, da hat es die Erweiterung.c
.Die häufigste, was zu tun ist die Verwendung der Präprozessor-bedingt fügen Sie diese für C++ Compilation:
Sie können die Funktion nutzen, sowohl aus C und C++, es ist die
extern "C"
was der compiler beschweren. Das Konstrukt ist nicht in der C-Sprache.ja, ich weiß nicht, warum es compalining, aber ich kompiliert habe, mit der gleichen Anwendung mit einer älteren version von aCC! diese version vielleicht brauchen einige zusätzliche flag gesetzt werden, während die Zusammenstellung!
Der C-compiler beschwert sich, weil Sie ein Konstrukt, das nicht in der C-Sprache. Es ist einfach so.
🙂 Ich werde versuchen, fügen Sie die #ifdef __cplusplus und ich werde c was passiert, danke Mann
InformationsquelleAutor Some programmer dude