Ring C++ fra C

Ring C Fra C



I programmering er det ofte behov for at C og C++ skal fungere sammen, vanligvis når du oppdaterer en gammel kode eller kombinerer modulene på forskjellige språk. Å bruke C++-koden i C-programmer er veldig nyttig for programmerere, spesielt når du oppdaterer en gammel programvare eller blander delene som er skrevet på begge språk. Denne guiden vil vise deg hvordan du får C++-funksjonene til å fungere med C med enkle og nyttige eksempler. Å ringe på C++ fra et C-program kan virke vanskelig, men denne artikkelen forklarer alt trinn for trinn, så det er enkelt å følge med og begynne å bruke de to språkene sammen. Denne veiledningen er nyttig for prosjektene dine uavhengig av nivået av programmeringskunnskaper.

Forstå det grunnleggende

Når det gjelder å påkalle C++-funksjonene fra C og bruke C++-objektene, må flere nøkkelelementer vurderes:

Refererer til C++-klassene i C

En vanlig tilnærming til å referere til C++-klassene i C innebærer å bruke pekere til klasser som kan sendes mellom C- og C++-koden.







Navn Mangle

For å forhindre navneendringer som kan påvirke en gjenkjennelse i C, er det avgjørende å holde navnene konsistente. Dette sikrer at C kan identifisere og utnytte funksjonene og objektene korrekt.



Overskriftsfil for to formål

En overskriftsfil spiller en sentral rolle, og tjener et dobbelt formål for både C og C++. Den inkluderer klassedefinisjonene som er gjenkjennelige av C++ og innkapsler tilgangsfunksjonene for C.



Hvordan ringe C++ fra C

For å kalle C++-funksjonene fra C, er den eksterne 'C'-erklæringen avgjørende. Når den brukes på C++-funksjoner, sikrer det at funksjonsnavnene behandles i C-stilen (ved hjelp av C-kobling) under kompileringsprosessen. C gjenkjenner ikke C++-funksjonene som funksjonsoverbelastning og navnmangling som kan oppstå under C++-kompilering. Ved å bruke ekstern 'C', genererer C++-kompilatoren funksjonsnavnene som følger C-konvensjonene, noe som tillater en sømløs interoperabilitet. Denne erklæringen gir et standardisert grensesnitt, som gjør det mulig for en C-kode å få tilgang til og bruke C++-funksjonene uten å støte på navnekonflikter eller kompatibilitetsproblemer. Følgende er eksempler på å kalle C++ fra C. For å forstå hvordan denne kombinasjonen fungerer, la oss se nærmere på forekomstene.





Praktiske eksempler: Beregn arealet av en sirkel ved å ringe C++ fra C

I dette enkle eksempelet vil vi veilede deg til hvordan du kan beregne arealet til en sirkel ved å kalle en C++ funksjon i C. Denne koden består av en header-fil (sirkel.h) og en implementeringsfil (sirkel.cpp). Den første delen av koden involverer den eksterne C-deklarasjonen i overskriftsfilen. Se følgende kode. La oss deretter utdype hver linje med kode individuelt:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

ekstern 'C' {

dobbelt calculate_Carea ( dobbelt rad ) ;

}

#slutt om

dobbelt Circle_CARea ( dobbelt rad ) {

komme tilbake 3,14159 * rad * rad ;

}

La oss bryte ned hver del:



#ifndef CIRCLE_AREA og #define CIRCLE_AREA

Disse linjene er en del av include guards som sikrer at innholdet i header-filen bare inkluderes én gang i kompileringsprosessen. Hvis CIRCLE_AREA ikke er definert, vil den påfølgende koden bli inkludert og CIRCLE_AREA vil bli definert.

ekstern 'C'

Denne syntaksen brukes til å erklære at følgende funksjon har en C-kobling. Dette er viktig når du skriver en kode som skal kalles fra både C og C++.

dobbelt calculate_Carea ( dobbelt rad ) ;

Denne linjen erklærer en funksjon kalt 'calculate_Carea' som tar et dobbeltargument (rad) og returnerer en dobbel.

Den eksterne 'C'-erklæringen i overskriftsfilen informerer kompilatoren om å bruke en C-stilkobling for funksjonen, noe som gjør den anropbar fra C-koden. Bruk denne koden til å finne arealet av en sirkel ved å lagre den i en 'circle.h'-fil. Når du har lagret denne overskriftsfilen, er alt du trenger å gjøre å inkludere denne som en overskriftsfil i C++-programmet og utføre ønsket funksjon. Følgende er C-koden som beregner arealet av en sirkel. 'main.c'-filen inkluderer C++-overskriften og kaller opp 'Circle_Carea' direkte. Se følgende kode:

#inkluder 'sirkel.h'

int hoved- ( ) {

dobbelt rads = 5.0 ;

dobbelt område = Circle_CARea ( rads ) ;

printf ( «Området av sirkelen er: %.2f \n ' , område ) ;

komme tilbake 0 ;

}

Dette enkle C-programmet beregner og skriver ut en sirkels areal ved hjelp av en funksjon som er definert i den forrige filen kalt 'sirkel.h'. La oss bryte ned koden:

#inkluder 'sirkel.h'

Denne linjen inkluderer innholdet i 'circle.h'-headerfilen i programmet. Overskriftsfilen inneholder sannsynligvis funksjonserklæringene eller makroene som er relatert til sirkelberegninger.

int hoved- ( ) {

Programmets kjøring starter med hovedfunksjonen, inngangspunktet for C-programmer.

dobbelt rads = 5.0 ;

En variabel rads av typen dobbel er deklarert og tildelt verdien 5.0. Denne variabelen representerer sannsynligvis sirkelens radius.

dobbelt område = Circle_CARea ( rads ) ;

En funksjon kalt 'Circle_Carea' kalles med radius rads som argument og resultatet lagres i variabelområdet.

printf ( 'Arealet til sirkelen er: %.2f \n ' , område ) ;

Resultatet skrives ut til konsollen ved å bruke 'printf'. 'Arealet til sirkelen er: %.2f\n'-strengen er en formatstreng med en '%f'-plassholder for områdeverdien. '.2' i '%.2f' spesifiserer at bare to desimaler skal vises.

komme tilbake 0 ;

Hovedfunksjonen avsluttes med å returnere 0 som indikerer en vellykket programkjøring til operativsystemet.

Oppsummert erklærer overskriftsfilen en funksjon med C-kobling, og implementeringsfilen definerer logikken for å beregne arealet til en sirkel. Denne separasjonen gjør at koden kan brukes i både C- og C++-programmer. Se utdataene til koden som er gitt i følgende bilde:

Som du kan se i utdataene, er det beregnede arealet av sirkelen 78,54 som er beregningen av arealet = 3,14*5*5 = 78,54. Funksjonen for å beregne arealet er definert i 'circle.h' header-filen som deretter kalles i C++-filen ved hjelp av ekstern 'C'.

Konklusjon

Vi guidet deg gjennom prosessen med å integrere C++ i C-programmene dine i denne veiledningen. Å integrere en C++-funksjonalitet i C-kodebaser krever nøye vurdering av pekere, navnemangling og overskriftsfiler med to formål. De medfølgende eksemplene illustrerer en praktisk tilnærming til å oppnå denne integrasjonen. Nå som du har sett hvordan du kobler disse to programmeringsspråkene, har du flere verktøy. Å låse opp kraften til C++ mens du jobber med C kan gi prosjektene dine et helt nytt nivå av funksjonalitet.