Zvaniet uz C++ no C

Zvaniet Uz C No C



Programmēšanā C un C++ bieži vien ir jāstrādā kopā, parasti, atjauninot vecu kodu vai kombinējot moduļus dažādās valodās. C++ koda izmantošana C programmās ir ļoti noderīga programmētājiem, it īpaši, atjauninot vecu programmatūru vai sajaucot daļas, kas rakstītas abās valodās. Šajā rokasgrāmatā ar vienkāršiem un noderīgiem piemēriem tiks parādīts, kā nodrošināt C++ funkciju darbību ar C. C++ izsaukšana no C programmas var šķist sarežģīta, taču šajā rakstā viss ir izskaidrots soli pa solim, tāpēc ir viegli sekot līdzi un sākt lietot abas valodas kopā. Šī rokasgrāmata ir noderīga jūsu projektiem neatkarīgi no jūsu programmēšanas zināšanu līmeņa.

Pamatu izpratne

Kad runa ir par C++ funkciju izsaukšanu no C un C++ objektu izmantošanu, jāņem vērā vairāki galvenie elementi:

Atsaucoties uz C++ klasēm C

Izplatīta pieeja atsaucei uz C++ klasēm C ietver norādes uz klasēm, kuras var nodot starp C un C++ kodu.







Vārds Mangle

Lai novērstu nosaukumu izmaiņas, kas var ietekmēt atpazīšanu valodā C, ir svarīgi saglabāt nosaukumus konsekventus. Tas nodrošina, ka C var pareizi identificēt un izmantot funkcijas un objektus.



Galvenes fails diviem mērķiem

Galvenes failam ir galvenā loma, un tam ir divi mērķi gan C, gan C++. Tas ietver klašu definīcijas, kuras atpazīst C++, un iekapsulē C piekļuves funkcijas.



Kā piezvanīt C++ no C

Lai izsauktu C++ funkcijas no C, ļoti svarīga ir ārējā “C” deklarācija. Lietojot C++ funkcijām, tas nodrošina, ka funkciju nosaukumi kompilēšanas procesā tiek apstrādāti C stilā (izmantojot C-saiti). C neatpazīst C++ līdzekļus, piemēram, funkciju pārslodzi un nosaukumu izjaukšanu, kas var rasties C++ kompilēšanas laikā. Izmantojot ārējo “C”, C++ kompilators ģenerē funkciju nosaukumus, kas atbilst C konvencijām, nodrošinot netraucētu savietojamību. Šī deklarācija nodrošina standartizētu saskarni, kas ļauj C kodam piekļūt un izmantot C++ funkcijas, nesaskaroties ar nosaukumu konfliktiem vai saderības problēmām. Tālāk ir sniegti piemēri C++ izsaukšanai no C. Lai saprastu, kā šī kombinācija darbojas, apskatīsim gadījumus sīkāk.





Praktiski piemēri: aprēķiniet apļa laukumu, izsaucot C++ no C

Šajā vienkāršajā piemērā mēs jums pastāstīsim, kā aprēķināt apļa laukumu, izsaucot C++ funkciju. Šis kods sastāv no galvenes faila (circle.h) un ieviešanas faila (circle.cpp). Pirmā koda daļa ietver ārējo C deklarāciju galvenes failā. Skatiet tālāk norādīto kodu. Pēc tam apskatīsim katru koda rindiņu atsevišķi:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

ārējais 'C' {

dubultā aprēķināt_CArea ( dubultā rad ) ;

}

#endif

dubultā Circle_CArea ( dubultā rad ) {

atgriezties 3.14159 * rad * rad ;

}

Sadalīsim katru daļu:



#ifndef CIRCLE_AREA un #define CIRCLE_AREA

Šīs rindas ir daļa no iekļaušanas aizsargiem, kas nodrošina, ka galvenes faila saturs tiek iekļauts tikai vienu reizi kompilācijas procesā. Ja CIRCLE_AREA nav definēts, tiks iekļauts nākamais kods un tiks definēts CIRCLE_AREA.

ārējais 'C'

Šī sintakse tiek izmantota, lai paziņotu, ka tālāk norādītajai funkcijai ir C saite. Tas ir būtiski, rakstot kodu, kas tiks izsaukts gan no C, gan no C++.

dubultā aprēķināt_CArea ( dubultā rad ) ;

Šī rinda deklarē funkciju ar nosaukumu “calculate_Carea”, kas ņem dubulto argumentu (rad) un atgriež dubulto vērtību.

Ārējā “C” deklarācija galvenes failā informē kompilatoru, lai funkcijai izmantotu C stila saiti, padarot to izsaucamu no C koda. Izmantojiet šo kodu, lai atrastu apļa laukumu, saglabājot to failā “circle.h”. Kad esat saglabājis šo galvenes failu, viss, kas jums jādara, ir iekļaut to kā galvenes failu programmā C++ un izpildīt vajadzīgo funkciju. Tālāk ir norādīts C kods, kas aprēķina apļa laukumu. Fails “main.c” ietver C++ galveni un tieši izsauc “Circle_Carea”. Skatiet šādu kodu:

#include 'circle.h'

starpt galvenais ( ) {

dubultā rads = 5.0 ;

dubultā apgabalā = Circle_CArea ( rads ) ;

printf ( 'Apļa laukums ir:  %.2f \n ' , apgabalā ) ;

atgriezties 0 ;

}

Šī vienkāršā C programma aprēķina un izdrukā apļa laukumu, izmantojot funkciju, kas definēta iepriekšējā failā ar nosaukumu “circle.h”. Sadalīsim kodu:

#include 'circle.h'

Šajā rindā ir iekļauts programmas galvenes faila “circle.h” saturs. Galvenes failā, iespējams, ir ietvertas funkciju deklarācijas vai makro, kas ir saistīti ar apļa aprēķiniem.

starpt galvenais ( ) {

Programmas izpilde sākas ar galveno funkciju, C programmu ieejas punktu.

dubultā rads = 5.0 ;

Divkāršā tipa mainīgais rads tiek deklarēts un piešķirts ar vērtību 5,0. Šis mainīgais, iespējams, apzīmē apļa rādiusu.

dubultā apgabalā = Circle_CArea ( rads ) ;

Funkcija ar nosaukumu “Circle_Carea” tiek izsaukta ar rādiusu rads kā argumentu, un rezultāts tiek saglabāts mainīgā apgabalā.

printf ( 'Apļa laukums ir: %.2f \n ' , apgabalā ) ;

Rezultāts tiek izdrukāts konsolē, izmantojot “printf”. Virkne “Apļa laukums ir: %.2f\n” ir formāta virkne ar apgabala vērtības vietturi “%f”. “.2” laukā “.2f” norāda, ka ir jāparāda tikai divas zīmes aiz komata.

atgriezties 0 ;

Galvenā funkcija noslēdzas, atgriežot 0, kas norāda uz veiksmīgu programmas izpildi operētājsistēmā.

Rezumējot, galvenes fails deklarē funkciju ar C saiti, un ieviešanas fails nosaka apļa laukuma aprēķināšanas loģiku. Šī atdalīšana ļauj kodu izmantot gan C, gan C++ programmās. Skatiet koda izvadi, kas norādīta šajā attēlā:

Kā redzat izejā, apļa aprēķinātais laukums ir 78,54, kas ir laukuma aprēķins = 3,14 * 5 * 5 = 78,54. Laukuma aprēķināšanas funkcija ir definēta galvenes failā “circle.h”, kas pēc tam tiek izsaukts C++ failā, izmantojot ārējo “C”.

Secinājums

Šajā rokasgrāmatā mēs sniedzām jums norādījumus par C++ integrēšanu jūsu C programmās. C++ funkcionalitātes integrēšanai C kodu bāzēs ir rūpīgi jāapsver norādes, nosaukumu maiņa un divējāda lietojuma galvenes faili. Sniegtie piemēri ilustrē praktisku pieeju šīs integrācijas sasniegšanai. Tagad, kad esat redzējis, kā savienot šīs divas programmēšanas valodas, jums ir vairāk rīku. Atbrīvojot C++ jaudu, strādājot ar C, jūsu projekti var iegūt pilnīgi jaunu funkcionalitātes līmeni.