Skambinkite C++ iš C

Skambinkite C Is C



Programuojant dažnai reikia, kad C ir C++ dirbtų kartu, paprastai atnaujinant seną kodą arba derinant modulius įvairiomis kalbomis. C++ kodo naudojimas C programose yra labai naudingas programuotojams, ypač atnaujinant seną programinę įrangą arba maišant dalis, parašytas abiem kalbomis. Šiame vadove paprastais ir naudingais pavyzdžiais bus parodyta, kaip priversti C++ funkcijas veikti su C. Iškviesti C++ iš C programos gali atrodyti sudėtinga, tačiau šiame straipsnyje viskas paaiškinama žingsnis po žingsnio, todėl lengva sekti ir pradėti vartoti dvi kalbas kartu. Šis vadovas yra naudingas jūsų projektams, nepaisant jūsų programavimo žinių lygio.

Pagrindų supratimas

Kalbant apie C++ funkcijų iškvietimą iš C ir naudojant C++ objektus, reikia atsižvelgti į keletą pagrindinių elementų:

Nuoroda į C++ klases C

Įprastas būdas nurodyti C++ klases C apima rodyklių naudojimą į klases, kurias galima perduoti tarp C ir C++ kodų.







Vardas Mangle

Norint išvengti vardo pakeitimų, kurie gali turėti įtakos atpažinimui C, labai svarbu, kad vardai būtų nuoseklūs. Tai užtikrina, kad C gali teisingai identifikuoti ir panaudoti funkcijas bei objektus.



Dvigubos paskirties antraštės failas

Antraštės failas atlieka pagrindinį vaidmenį ir atlieka dvejopą paskirtį tiek C, tiek C++. Tai apima klasių apibrėžimus, kuriuos atpažįsta C++, ir apima C priedų funkcijas.



Kaip paskambinti C++ iš C

Norint iškviesti C++ funkcijas iš C, labai svarbi išorinė „C“ deklaracija. Taikant C++ funkcijoms, ji užtikrina, kad kompiliavimo proceso metu funkcijų pavadinimai būtų traktuojami C stiliumi (naudojant C sąsają). C neatpažįsta C++ ypatybių, tokių kaip funkcijų perkrovimas ir vardų sugadinimas, kurie gali atsirasti kompiliuojant C++. Naudodamas išorinį „C“, C++ kompiliatorius generuoja funkcijų pavadinimus, kurie atitinka C konvencijas, todėl užtikrina sklandų sąveiką. Ši deklaracija suteikia standartizuotą sąsają, leidžiančią C kodui pasiekti ir naudoti C++ funkcijas, nesusiduriant su pavadinimų konfliktais ar suderinamumo problemomis. Toliau pateikiami C++ iškvietimo iš C pavyzdžiai. Norėdami suprasti, kaip veikia šis derinys, pažvelkime atidžiau į atvejus.





Praktiniai pavyzdžiai: Apskaičiuokite apskritimo plotą skambindami C++ iš C

Šiame paprastame pavyzdyje paaiškinsime, kaip galite apskaičiuoti apskritimo plotą, iškvietę C++ funkciją C. Šį kodą sudaro antraštės failas (circle.h) ir įgyvendinimo failas (circle.cpp). Pirmoji kodo dalis apima išorinę C deklaraciją antraštės faile. Žiūrėkite toliau pateiktą kodą. Tada panagrinėkime kiekvieną kodo eilutę atskirai:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

išorinis 'C' {

dvigubai apskaičiuoti_CArea ( dvigubai rad ) ;

}

#endif

dvigubai Circle_CArea ( dvigubai rad ) {

grąžinti 3.14159 * rad * rad ;

}

Išskaidykime kiekvieną dalį:



#ifndef CIRCLE_AREA ir #define CIRCLE_AREA

Šios eilutės yra įtraukimo apsaugos dalis, kuri užtikrina, kad antraštės failo turinys įtraukiamas tik vieną kartą į kompiliavimo procesą. Jei CIRCLE_AREA neapibrėžtas, bus įtrauktas tolesnis kodas ir apibrėžta CIRCLE_AREA.

išorinis 'C'

Ši sintaksė naudojama deklaruoti, kad ši funkcija turi C ryšį. Tai būtina rašant kodą, kuris bus iškviestas iš C ir C++.

dvigubai apskaičiuoti_CArea ( dvigubai rad ) ;

Ši eilutė deklaruoja funkciją, pavadintą „calculate_Carea“, kuri paima dvigubą argumentą (rad) ir grąžina dvigubą.

Išorinė „C“ deklaracija antraštės faile informuoja kompiliatorių, kad funkcijai naudotų C stiliaus nuorodą, todėl ją galima iškviesti iš C kodo. Naudokite šį kodą, kad rastumėte apskritimo plotą, išsaugodami jį 'circle.h' faile. Išsaugojus šį antraštės failą, tereikia įtraukti jį kaip antraštės failą į C++ programą ir atlikti norimą funkciją. Toliau pateikiamas C kodas, apskaičiuojantis apskritimo plotą. „main.c“ faile yra C++ antraštė ir tiesiogiai iškviečiamas „Circle_Carea“. Žiūrėkite šį kodą:

#include 'circle.h'

tarpt pagrindinis ( ) {

dvigubai rads = 5.0 ;

dvigubai plotas = Circle_CArea ( rads ) ;

printf ( 'Apskritimo  plotas yra:  %.2f \n , plotas ) ;

grąžinti 0 ;

}

Ši paprasta C programa apskaičiuoja ir atspausdina apskritimo plotą naudodama funkciją, kuri apibrėžta ankstesniame faile pavadinimu 'circle.h'. Išskaidykime kodą:

#include 'circle.h'

Šioje eilutėje yra programos antraštės failo „circle.h“ turinys. Tikėtina, kad antraštės faile yra funkcijų deklaracijos arba makrokomandos, susijusios su apskritimo skaičiavimais.

tarpt pagrindinis ( ) {

Programos vykdymas prasideda nuo pagrindinės funkcijos, C programų įėjimo taško.

dvigubai rads = 5.0 ;

Deklaruojamas dvigubo tipo kintamasis rads ir jam priskiriama 5,0 reikšmė. Šis kintamasis greičiausiai reiškia apskritimo spindulį.

dvigubai plotas = Circle_CArea ( rads ) ;

Funkcija pavadinimu „Circle_Carea“ iškviečiama naudojant spindulio rads kaip argumentą, o rezultatas išsaugomas kintamojo srityje.

printf ( 'Apskritimo plotas yra: %.2f \n , plotas ) ;

Rezultatas atspausdinamas į konsolę naudojant 'printf'. Eilutė „Apskritimo plotas yra: %.2f\n“ yra formato eilutė su „%f“ vietos reikšmės rezervuota vieta. „.2“ „%.2f“ nurodo, kad turi būti rodomi tik du skaitmenys po kablelio.

grąžinti 0 ;

Pagrindinė funkcija baigiama grąžinant 0, o tai rodo sėkmingą programos vykdymą operacinei sistemai.

Apibendrinant galima pasakyti, kad antraštės failas deklaruoja funkciją su C ryšiu, o įgyvendinimo failas apibrėžia apskritimo ploto skaičiavimo logiką. Šis atskyrimas leidžia kodą naudoti tiek C, tiek C++ programose. Žr. kodo išvestį, pateiktą šiame paveikslėlyje:

Kaip matote išvestyje, apskaičiuotas apskritimo plotas yra 78,54, tai yra ploto apskaičiavimas = 3,14 * 5 * 5 = 78,54. Ploto skaičiavimo funkcija yra apibrėžta antraštės faile 'circle.h', kuris vėliau iškviečiamas C++ faile naudojant išorinį 'C'.

Išvada

Šiame vadove paaiškinome, kaip integruoti C++ į C programas. Norint integruoti C++ funkciją į C kodų bazes, reikia atidžiai apsvarstyti nuorodas, vardų keitimą ir dvejopos paskirties antraščių failus. Pateikti pavyzdžiai iliustruoja praktinį požiūrį į šią integraciją. Dabar, kai pamatėte, kaip sujungti šias dvi programavimo kalbas, turite daugiau įrankių. Atlaisvinus C++ galią dirbant su C, jūsų projektai gali įgyti visiškai naują funkcionalumo lygį.