Rufen Sie C++ aus C auf

Rufen Sie C Aus C Auf



Bei der Programmierung besteht häufig die Notwendigkeit, dass C und C++ zusammenarbeiten, typischerweise bei der Aktualisierung eines alten Codes oder der Kombination der Module in verschiedenen Sprachen. Die Verwendung des C++-Codes in C-Programmen ist für Programmierer sehr hilfreich, insbesondere wenn sie eine alte Software aktualisieren oder die Teile mischen, die in beiden Sprachen geschrieben sind. Diese Anleitung zeigt Ihnen anhand einfacher und nützlicher Beispiele, wie Sie die C++-Funktionen mit C zum Laufen bringen. Der Aufruf von C++ aus einem C-Programm mag schwierig erscheinen, aber dieser Artikel erklärt alles Schritt für Schritt, sodass es einfach ist, mitzumachen und mit der gemeinsamen Verwendung der beiden Sprachen zu beginnen. Dieser Leitfaden ist für Ihre Projekte hilfreich, unabhängig von Ihren Programmierkenntnissen.

Die Grundlagen verstehen

Wenn es darum geht, die C++-Funktionen von C aus aufzurufen und die C++-Objekte zu verwenden, müssen mehrere Schlüsselelemente berücksichtigt werden:

Verweisen auf die C++-Klassen in C

Ein gängiger Ansatz zum Referenzieren der C++-Klassen in C besteht darin, Zeiger auf Klassen zu verwenden, die zwischen C- und C++-Code übergeben werden können.







Nennen Sie Mangle

Um Namensänderungen zu verhindern, die sich auf die Erkennung in C auswirken können, ist es wichtig, die Namen konsistent zu halten. Dadurch wird sichergestellt, dass C die Funktionen und Objekte korrekt identifizieren und nutzen kann.



Header-Datei für zwei Zwecke

Eine Header-Datei spielt eine zentrale Rolle und dient sowohl für C als auch für C++ einem doppelten Zweck. Es enthält die von C++ erkennbaren Klassendefinitionen und kapselt die Zugriffsfunktionen für C.



So rufen Sie C++ aus C auf

Um die C++-Funktionen von C aus aufzurufen, ist die externe „C“-Deklaration entscheidend. Bei der Anwendung auf C++-Funktionen stellt es sicher, dass die Funktionsnamen während des Kompilierungsprozesses im C-Stil (unter Verwendung von C-Linkage) behandelt werden. C erkennt die C++-Funktionen wie Funktionsüberladung und Namensverzerrung nicht, die während der C++-Kompilierung auftreten können. Mit externem „C“ generiert der C++-Compiler die Funktionsnamen, die den C-Konventionen entsprechen und so eine nahtlose Interoperabilität ermöglichen. Diese Deklaration stellt eine standardisierte Schnittstelle bereit, die es einem C-Code ermöglicht, auf die C++-Funktionen zuzugreifen und diese zu nutzen, ohne dass Namenskonflikte oder Kompatibilitätsprobleme auftreten. Im Folgenden finden Sie Beispiele für den Aufruf von C++ aus C. Um zu verstehen, wie diese Kombination funktioniert, schauen wir uns die Instanzen genauer an.





Praktische Beispiele: Berechnen Sie die Fläche eines Kreises, indem Sie C++ aus C aufrufen

In diesem einfachen Beispiel zeigen wir Ihnen, wie Sie die Fläche eines Kreises berechnen können, indem Sie eine C++-Funktion in C aufrufen. Dieser Code besteht aus einer Header-Datei (circle.h) und einer Implementierungsdatei (circle.cpp). Der erste Teil des Codes beinhaltet die externe C-Deklaration in der Header-Datei. Siehe den folgenden Code. Lassen Sie uns dann jede Codezeile einzeln näher erläutern:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

extern 'C' {

doppelt berechne_CArea ( doppelt rad ) ;

}

#endif

doppelt Circle_CArea ( doppelt rad ) {

zurückkehren 3.14159 * rad * rad ;

}

Lassen Sie uns jeden Teil aufschlüsseln:



#ifndef CIRCLE_AREA und #define CIRCLE_AREA

Diese Zeilen sind Teil von Include-Guards, die sicherstellen, dass der Inhalt der Header-Datei nur einmal in den Kompilierungsprozess einbezogen wird. Wenn CIRCLE_AREA nicht definiert ist, wird der nachfolgende Code einbezogen und CIRCLE_AREA definiert.

extern 'C'

Mit dieser Syntax wird deklariert, dass die folgende Funktion über eine C-Verknüpfung verfügt. Dies ist wichtig, wenn Sie einen Code schreiben, der sowohl von C als auch von C++ aufgerufen wird.

doppelt berechne_CArea ( doppelt rad ) ;

Diese Zeile deklariert eine Funktion namens „calculate_Carea“, die ein Double-Argument (rad) akzeptiert und ein Double zurückgibt.

Die externe „C“-Deklaration in der Header-Datei weist den Compiler an, eine Verknüpfung im C-Stil für die Funktion zu verwenden, sodass sie vom C-Code aus aufrufbar ist. Verwenden Sie diesen Code, um die Fläche eines Kreises zu ermitteln, indem Sie ihn in einer „circle.h“-Datei speichern. Sobald Sie diese Header-Datei gespeichert haben, müssen Sie sie nur noch als Header-Datei in das C++-Programm einbinden und die gewünschte Funktion ausführen. Das Folgende ist der C-Code, der die Fläche eines Kreises berechnet. Die Datei „main.c“ enthält den C++-Header und ruft „Circle_Carea“ direkt auf. Siehe den folgenden Code:

#include „circle.h“

int hauptsächlich ( ) {

doppelt Rad = 5,0 ;

doppelt Bereich = Circle_CArea ( Rad ) ;

printf ( „Die Fläche des Kreises beträgt:  %.2f \N ' , Bereich ) ;

zurückkehren 0 ;

}

Dieses einfache C-Programm berechnet und druckt die Fläche eines Kreises mithilfe einer Funktion, die in der vorherigen Datei mit dem Namen „circle.h“ definiert ist. Lassen Sie uns den Code aufschlüsseln:

#include „circle.h“

Diese Zeile enthält den Inhalt der Header-Datei „circle.h“ im Programm. Die Header-Datei enthält wahrscheinlich die Funktionsdeklarationen oder Makros, die sich auf Kreisberechnungen beziehen.

int hauptsächlich ( ) {

Die Ausführung des Programms beginnt mit der Hauptfunktion, dem Einstiegspunkt für C-Programme.

doppelt Rad = 5,0 ;

Eine Variable rads vom Typ double wird deklariert und mit dem Wert 5,0 zugewiesen. Diese Variable repräsentiert wahrscheinlich den Radius des Kreises.

doppelt Bereich = Circle_CArea ( Rad ) ;

Eine Funktion namens „Circle_Carea“ wird mit dem Radius rads als Argument aufgerufen und das Ergebnis im Variablenbereich gespeichert.

printf ( „Die Fläche des Kreises beträgt: %.2f \N ' , Bereich ) ;

Das Ergebnis wird mit „printf“ auf der Konsole ausgegeben. Die Zeichenfolge „Die Fläche des Kreises beträgt: %.2f\n“ ist eine Formatzeichenfolge mit einem „%f“-Platzhalter für den Flächenwert. Die „.2“ in „%.2f“ gibt an, dass nur zwei Dezimalstellen angezeigt werden sollen.

zurückkehren 0 ;

Die Hauptfunktion schließt mit der Rückgabe von 0 ab, was dem Betriebssystem eine erfolgreiche Programmausführung anzeigt.

Zusammenfassend lässt sich sagen, dass die Header-Datei eine Funktion mit C-Verknüpfung deklariert und die Implementierungsdatei die Logik zur Berechnung der Fläche eines Kreises definiert. Durch diese Trennung kann der Code sowohl in C- als auch in C++-Programmen verwendet werden. Sehen Sie sich die Ausgabe des Codes an, der im folgenden Bild dargestellt ist:

Wie Sie in der Ausgabe sehen können, beträgt die berechnete Fläche des Kreises 78,54, was der Berechnung von Fläche = 3,14*5*5 = 78,54 entspricht. Die Funktion zur Berechnung der Fläche wird in der Header-Datei „circle.h“ definiert, die dann in der C++-Datei mit Hilfe von extern „C“ aufgerufen wird.

Abschluss

In diesem Leitfaden haben wir Sie durch den Prozess der Integration von C++ in Ihre C-Programme geführt. Die Integration einer C++-Funktionalität in C-Codebasen erfordert eine sorgfältige Berücksichtigung von Zeigern, Namensverzerrungen und Headerdateien mit doppeltem Zweck. Die bereitgestellten Beispiele veranschaulichen einen praktischen Ansatz zur Erreichung dieser Integration. Nachdem Sie nun gesehen haben, wie Sie diese beiden Programmiersprachen verbinden, stehen Ihnen weitere Tools zur Verfügung. Wenn Sie die Leistungsfähigkeit von C++ nutzen, während Sie mit C arbeiten, können Sie Ihren Projekten ein völlig neues Maß an Funktionalität verleihen.