Ring til C++ fra C

Ring Til C Fra C



I programmering er der ofte behov for, at C og C++ arbejder sammen, typisk når man opdaterer en gammel kode eller kombinerer modulerne på forskellige sprog. Brug af C++-koden i C-programmer er meget nyttigt for programmører, især når man opdaterer en gammel software eller blander de dele, der er skrevet på begge sprog. Denne guide viser dig, hvordan du får C++-funktionerne til at fungere med C med enkle og nyttige eksempler. At kalde på C++ fra et C-program kan virke besværligt, men denne artikel forklarer alt trin for trin, så det er nemt at følge med og begynde at bruge de to sprog sammen. Denne guide er nyttig til dine projekter uanset dit niveau af programmeringsviden.

Forstå det grundlæggende

Når det kommer til at kalde C++-funktionerne fra C og bruge C++-objekterne, skal flere nøgleelementer overvejes:

Henvisning til C++ klasserne i C

En almindelig tilgang til at referere til C++-klasserne i C involverer at bruge pointere til klasser, der kan overføres mellem C- og C++-koden.







Navn Mangle

For at forhindre navneændringer, der kan påvirke en genkendelse i C, er det afgørende at holde navnene konsekvente. Dette sikrer, at C korrekt kan identificere og udnytte funktionerne og objekterne.



Header-fil til dobbeltformål

En header-fil spiller en central rolle og tjener et dobbelt formål for både C og C++. Den inkluderer klassedefinitionerne, der kan genkendes af C++ og indkapsler accessorfunktionerne for C.



Sådan ringer du til C++ fra C

For at kalde C++-funktionerne fra C, er den eksterne 'C'-erklæring afgørende. Når det anvendes på C++-funktioner, sikrer det, at funktionsnavnene behandles i C-stilen (ved hjælp af C-linkage) under kompileringsprocessen. C genkender ikke C++-funktionerne såsom funktionsoverbelastning og navnemangling, som kan forekomme under C++-kompilering. Ved hjælp af ekstern 'C' genererer C++-kompileren funktionsnavne, der overholder C-konventioner, hvilket muliggør en problemfri interoperabilitet. Denne erklæring giver en standardiseret grænseflade, der gør det muligt for en C-kode at få adgang til og bruge C++-funktionerne uden at støde på navnekonflikter eller kompatibilitetsproblemer. Følgende er eksempler på at kalde C++ fra C. For at forstå, hvordan denne kombination fungerer, lad os se nærmere på forekomsterne.





Praktiske eksempler: Beregn arealet af en cirkel ved at kalde C++ fra C

I dette simple eksempel vil vi guide dig til, hvordan du kan beregne arealet af en cirkel ved at kalde en C++ funktion i C. Denne kode består af en header-fil (circle.h) og en implementeringsfil (circle.cpp). Den første del af koden involverer den eksterne C-erklæring i header-filen. Se følgende kode. Lad os derefter uddybe hver linje kode individuelt:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

ekstern 'C' {

dobbelt calculate_Carea ( dobbelt rad ) ;

}

#Afslut Hvis

dobbelt Circle_Carea ( dobbelt rad ) {

Vend tilbage 3,14159 * rad * rad ;

}

Lad os nedbryde hver del:



#ifndef CIRCLE_AREA og #define CIRCLE_AREA

Disse linjer er en del af include guards, som sikrer, at indholdet af header-filen kun inkluderes én gang i kompileringsprocessen. Hvis CIRCLE_AREA ikke er defineret, vil den efterfølgende kode blive inkluderet, og CIRCLE_AREA vil blive defineret.

ekstern 'C'

Denne syntaks bruges til at erklære, at følgende funktion har en C-kobling. Dette er vigtigt, når du skriver en kode, der vil blive kaldt fra både C og C++.

dobbelt calculate_Carea ( dobbelt rad ) ;

Denne linje erklærer en funktion ved navn 'calculate_Carea', der tager et dobbelt argument (rad) og returnerer en double.

Den eksterne 'C'-erklæring i header-filen informerer compileren om at bruge en C-stil-kobling til funktionen, hvilket gør den kaldbar fra C-koden. Brug denne kode til at finde arealet af en cirkel ved at gemme den i en 'circle.h' fil. Når du har gemt denne header-fil, skal du blot inkludere denne som en header-fil i C++-programmet og udføre den ønskede funktion. Det følgende er C-koden, der beregner arealet af en cirkel. Filen 'main.c' indeholder C++-headeren og kalder 'Circle_Carea' direkte. Se følgende kode:

#inkluder 'cirkel.h'

int vigtigste ( ) {

dobbelt rads = 5,0 ;

dobbelt areal = Circle_Carea ( rads ) ;

printf ( 'Arealet af cirklen er: %.2f \n ' , areal ) ;

Vend tilbage 0 ;

}

Dette simple C-program beregner og udskriver en cirkels areal ved hjælp af en funktion, der er defineret i den forrige fil med navnet 'cirkel.h'. Lad os nedbryde koden:

#inkluder 'cirkel.h'

Denne linje inkluderer indholdet af 'circle.h'-headerfilen i programmet. Overskriftsfilen indeholder sandsynligvis de funktionserklæringer eller makroer, der er relateret til cirkelberegninger.

int vigtigste ( ) {

Programmets udførelse starter med hovedfunktionen, indgangspunktet for C-programmer.

dobbelt rads = 5,0 ;

En variabel rads af typen double erklæres og tildeles med værdien 5,0. Denne variabel repræsenterer sandsynligvis cirklens radius.

dobbelt areal = Circle_Carea ( rads ) ;

En funktion kaldet 'Circle_Carea' kaldes med radius rads som argument, og resultatet gemmes i det variable område.

printf ( 'Arealet af cirklen er: %.2f \n ' , areal ) ;

Resultatet udskrives til konsollen ved hjælp af 'printf'. Strengen 'Arealet af cirklen er: %.2f\n' er en formatstreng med en '%f' pladsholder for arealværdien. '.2' i '%.2f' angiver, at kun to decimaler skal vises.

Vend tilbage 0 ;

Hovedfunktionen afsluttes med at returnere 0, hvilket indikerer en vellykket programudførelse til operativsystemet.

Sammenfattende erklærer header-filen en funktion med C-kobling, og implementeringsfilen definerer logikken til at beregne en cirkels areal. Denne adskillelse gør det muligt at bruge koden i både C- og C++-programmer. Se outputtet af koden, der er givet i følgende billede:

Som du kan se i outputtet, er det beregnede areal af cirklen 78,54, hvilket er beregningen af ​​areal = 3,14*5*5 = 78,54. Funktionen til at beregne arealet er defineret i 'circle.h' header-filen, som derefter kaldes i C++-filen ved hjælp af ekstern 'C'.

Konklusion

Vi guidede dig gennem processen med at integrere C++ i dine C-programmer i denne guide. Integrering af en C++-funktionalitet i C-kodebaser kræver omhyggelig overvejelse af pointere, navnemangling og dual-purpose header-filer. De medfølgende eksempler illustrerer en praktisk tilgang til at opnå denne integration. Nu hvor du har set, hvordan du forbinder disse to programmeringssprog, har du flere værktøjer. At låse op for kraften i C++, mens du arbejder med C, kan give dine projekter et helt nyt niveau af funktionalitet.