Ich habe eine extern bereitgestellte .cpp-Datei. Es ist eine Mischung aus C-kompatiblem Code und ein bisschen C++. Der C++-Code ist nur ein Wrapper um C, um C++-Features zu nutzen.
Es verwendet #ifdef __cplusplus Makros zum Schutz des C++-Codes, was großartig ist. Wenn ich versuche, mit GCC zu kompilieren, wird es leider aufgrund der Dateiendung als C++ behandelt. Ich kenne die Unterschiede zw gcc und g++ – Ich möchte nicht als C++ kompilieren.
Gibt es eine Möglichkeit, GCC zu zwingen, diese Datei als C-Datei zu behandeln? Ich habe versucht mit zB --std=c99aber dies erzeugt korrekterweise den Fehler, dass C99 für C++ nicht gültig ist.
Das Umbenennen der Datei in .c funktioniert, aber ich möchte dies nach Möglichkeit vermeiden, da es extern bereitgestellt wird und es schön wäre, wenn es eine unberührte Kopie bleiben würde.
Manchmal, wenn ich SO Fragen sehe. Ich möchte nur ein großes RTFM schreien!! man gcc. Für diesen König der Fragen braucht es tatsächlich weniger Zeit als das Schreiben der Frage.
– log0
18. November 2010 um 15:21 Uhr
Ich hatte das gleiche Problem, weil ich reinen C-Code in eine .cpp-Datei kompilieren wollte … offensichtlich bin ich ein ziemlicher Anfänger, was C. RTFM angeht! ist dann kein so guter Rat. gcc-Manpages umfassen 11.000 Zeilen und es ist ziemlich schwierig, dort eine Lösung zu finden, wenn Sie nicht wissen, wonach Sie suchen müssen.
– Tod
4. November 2011 um 8:05 Uhr
Ich bin anderer Meinung, das Lesen der Dokumentation ist nie Zeitverlust, und die Dokumentation von GCC ist meiner Meinung nach gut geschrieben
– Basile Starynkevitch
26. April 2021 um 14:26 Uhr
Michael Mrozek
Das -x Option für gcc können Sie die Sprache aller folgenden Eingabedateien angeben:
$ gcc -x c your-file-name.cpp
Wenn Sie nur diese eine Datei in einem Sonderfall behandeln möchten, können Sie verwenden -x none zum Abschalten der Sonderbehandlung:
$ gcc -x c your-filename.cpp -x none other-file-name.cpp
(your-filename.cpp wird als C kompiliert, während other-file-name.cpp wird die Erweiterung verwenden und als C++ kompilieren)
Wie peinlich, da muss ich einfach vorbeigeblättert haben! Vielen Dank, das gleiche gilt für alle anderen, die geantwortet haben.
– hell
18. November 2010 um 15:23 Uhr
Kompilieren foo.cpp Als C-Datei können Sie eine neue Datei mit dem Namen erstellen foo.c und setze folgendes als seinen gesamten Inhalt:
#include "foo.cpp"
Jetzt kompilieren foo.c Anstatt von foo.cpp.
Wir haben dies verwendet, um den anderen Weg zu gehen (kompilieren Sie a .c Datei als C++), um damit zu beginnen, C++-Funktionen in einigen Dateien zu verwenden und gleichzeitig ihre jahrzehntelange CVS-Geschichte zu bewahren. Außerdem verwenden wir den nativen Compiler jeder Plattform, nicht nur GCC, sodass wir den nicht finden mussten -x äquivalenten Befehl für ein halbes Dutzend Compiler, und lassen Sie dann unser Build-System diesen Befehl nur auf bestimmte Dateien anwenden.
Funktioniert als charmante und schnellstmögliche Lösung, denke ich.
– Mischo5500
18. Januar 2016 um 21:36 Uhr
14010100cookie-checkGCC zwingen, die .cpp-Datei als C zu kompilierenyes
Manchmal, wenn ich SO Fragen sehe. Ich möchte nur ein großes RTFM schreien!!
man gcc
. Für diesen König der Fragen braucht es tatsächlich weniger Zeit als das Schreiben der Frage.– log0
18. November 2010 um 15:21 Uhr
Ich hatte das gleiche Problem, weil ich reinen C-Code in eine .cpp-Datei kompilieren wollte … offensichtlich bin ich ein ziemlicher Anfänger, was C. RTFM angeht! ist dann kein so guter Rat. gcc-Manpages umfassen 11.000 Zeilen und es ist ziemlich schwierig, dort eine Lösung zu finden, wenn Sie nicht wissen, wonach Sie suchen müssen.
– Tod
4. November 2011 um 8:05 Uhr
Ich bin anderer Meinung, das Lesen der Dokumentation ist nie Zeitverlust, und die Dokumentation von GCC ist meiner Meinung nach gut geschrieben
– Basile Starynkevitch
26. April 2021 um 14:26 Uhr