Ich teste einige Auszüge, die ich mit g ++ von MinGW im Web gefunden habe. Das ist der C ++ - Compiler ... warum kompiliert er dann C ... warum verschmelzen die Leute C und C ++?
Die konkrete Frage lautet: Ist es O.K. um sowohl C als auch C ++ zu verwenden und unter g ++ zu kompilieren. Wenn die Antwort ja ist, macht dies mein Leben einfach, da ich den Code nicht ändern muss.
Seltsamerweise ... um C ++ zum Laufen zu bringen, besonders wenn man eine Zeichenkette an einen ifstream-Konstruktor übergibt, benötigt es eine C-Zeichenkette ...
Meine Annahme wäre, dass, weil C ++ zu bestimmten Zeiten von C-Konstrukten abhängig ist, O.K die zwei Sprachen zusammen schreiben soll.
Aus Gründen des Stils sollten Sie jedoch auf cout
/ cin
oder printf
/ scanf
setzen.
Es gibt einige Besonderheiten, bei denen char*
benötigt wird. Sie können die Lücke überbrücken, indem Sie die .c_str()
-Methode von std::string
verwenden, um eine zu erhalten.
In den meisten Fällen ist die C-Untergruppe von C ++ kompatibel. Wie genau es nicht kompatibel ist, spielt wahrscheinlich keine Rolle:
Wenn Sie C-Code-Codeschnipsel unter einem C ++ - Compiler kompilieren, stellen Sie sicher, dass Sie das lib-Format "c" in Ihren Includes verwenden ... zum Beispiel #include <cstdio>
anstelle von #include <stdio.h>
Zu einem recht begründeten Argument von Bjarne selbst, warum man scanf vermeiden sollte, siehe den Anfang dieses Artikels:
Es gibt viele Vorteile für die Verwendung von iostreams anstelle von printf:
Die C ++ - Sprache erbt einen Großteil ihrer Kernfunktionalität von C. Das liegt daran, dass C ++ von C abgeleitet wurde. Der C ++ - Standard enthält durch Verweis auf viele der C-Standards. Daher können Sie den C ++ - Compiler verwenden, um Code mit C-Konstrukten, Idiomen und Paradigmen zu schreiben. Dies wird oft als Verwendung von C ++ "als ein besseres C" bezeichnet.
Die lange und die kurze der obigen ist ja, Sie können printf
in C ++ Code verwenden. Dies wird ausdrücklich durch den Standard erlaubt.
Dies wird jedoch viele der Funktionen, die C ++ definieren, oft vernachlässigen. Ich werde diese Konversation für eine andere Frage verlassen, aber es genügt zu sagen, dass viele Leute Ihnen einfach sagen "Tu das nicht" oder "Das ist nicht C ++". Dies legt die Gründe beiseite, warum Sie printf
in einem C ++ - Programm nicht verwenden sollten oder warum Sie das wirklich wollen. Aber seien Sie versichert, dass es technisch erlaubt ist.
Ist es O.K. Verwenden Sie sowohl C als auch C ++ und kompilieren Sie unter g ++.
Ja, es ist in Ordnung, die zwei Sprachen zu mischen. Dies ist üblich mit Code, der als C anfing, aber dann wurden immer mehr C ++ - Funktionen hinzugefügt (offensichtlich hat jemand den Compiler auf dem Weg geändert).
Im Allgemeinen wird C-Code kompiliert und mit einem C ++ - Compiler ausgeführt. Es gibt viele mögliche Ausnahmen, wie die Verwendung von Schlüsselwörtern wie class
und virtual
für Namen von Dingen in C-Code oder C's lockere Casting-Regeln.
Man hört oft Leute sagen "sie sind sehr unterschiedliche Sprachen". Das liegt daran, dass jede Programmierfrage , die Sie fragen, wahrscheinlich eine andere Antwort hat, je nachdem, welche Sprache Sie verwenden möchten. Es gibt jedoch viele Ähnlichkeiten und Abwärtskompatibilitäten.