Apelați C++ din C

Apelati C Din C



În programare, este adesea nevoie ca C și C++ să lucreze împreună, de obicei atunci când se actualizează un cod vechi sau se combină modulele în diferite limbi. Folosirea codului C++ în programele C este foarte utilă pentru programatori, mai ales când actualizează un software vechi sau se amestecă părțile care sunt scrise în ambele limbi. Acest ghid vă va arăta cum să faceți ca funcțiile C++ să funcționeze cu C cu exemple simple și utile. Apelarea la C++ dintr-un program C poate părea dificilă, dar acest articol explică totul pas cu pas, așa că este ușor să urmăriți și să începeți să utilizați cele două limbi împreună. Acest ghid este util pentru proiectele dumneavoastră, indiferent de nivelul dumneavoastră de cunoștințe de programare.

Înțelegerea elementelor de bază

Când vine vorba de invocarea funcțiilor C++ din C și de utilizarea obiectelor C++, mai multe elemente cheie trebuie luate în considerare:

Referirea la clasele C++ în C

O abordare comună pentru a face referire la clasele C++ în C implică utilizarea pointeri către clase care pot fi trecute între codul C și C++.







Numele Mangle

Pentru a preveni schimbările de nume care pot afecta o recunoaștere în C, este esențial să păstrați numele consistente. Acest lucru asigură că C poate identifica și utiliza corect funcțiile și obiectele.



Fișier antet pentru scop dublu

Un fișier antet joacă un rol esențial, servind un scop dublu atât pentru C, cât și pentru C++. Include definițiile de clasă care sunt recunoscute de C++ și încapsulează funcțiile accesorii pentru C.



Cum să apelați C++ din C

Pentru a apela funcțiile C++ din C, declarația externă „C” este crucială. Când se aplică funcțiilor C++, se asigură că numele funcțiilor sunt tratate în stilul C (folosind C-linkage) în timpul procesului de compilare. C nu recunoaște caracteristicile C++, cum ar fi supraîncărcarea funcției și alterarea numelui, care pot apărea în timpul compilării C++. Folosind extern „C”, compilatorul C++ generează numele funcțiilor care aderă la convențiile C, permițând o interoperabilitate perfectă. Această declarație oferă o interfață standardizată, permițând unui cod C să acceseze și să utilizeze funcțiile C++ fără a întâmpina conflicte de denumire sau probleme de compatibilitate. Următoarele sunt exemple de apelare C++ din C. Pentru a înțelege cum funcționează această combinație, să ne uităm mai atent la instanțele.





Exemple practice: Calculați aria unui cerc apelând C++ din C

În acest exemplu simplu, vă vom ghida despre cum puteți calcula aria unui cerc apelând o funcție C++ în C. Acest cod constă dintr-un fișier antet (circle.h) și un fișier de implementare (circle.cpp). Prima parte a codului implică declarația extern C în fișierul antet. Vezi următorul cod. Apoi, să detaliem fiecare linie de cod în mod individual:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

extern 'C' {

dubla calculate_CArea ( dubla rad ) ;

}

#endif

dubla Circle_CArea ( dubla rad ) {

întoarcere 3,14159 * rad * rad ;

}

Să defalcăm fiecare parte:



#ifndef CIRCLE_AREA și #define CIRCLE_AREA

Aceste linii fac parte din include guards care asigură că conținutul fișierului antet este inclus o singură dată în procesul de compilare. Dacă CIRCLE_AREA nu este definit, codul următor va fi inclus și CIRCLE_AREA va fi definit.

extern 'C'

Această sintaxă este folosită pentru a declara că următoarea funcție are o legătură C. Acest lucru este esențial atunci când scrieți un cod care va fi apelat atât din C, cât și din C++.

dubla calculate_CArea ( dubla rad ) ;

Această linie declară o funcție numită „calculate_Carea” care ia un argument dublu (rad) și returnează un dublu.

Declarația externă „C” din fișierul antet informează compilatorul să folosească o legătură în stil C pentru funcție, făcând-o apelabilă din codul C. Utilizați acest cod pentru a găsi aria unui cerc salvând-o într-un fișier „cercle.h”. Odată ce salvați acest fișier antet, tot ce trebuie să faceți este să îl includeți ca fișier antet în programul C++ și să efectuați funcția dorită. Următorul este codul C care calculează aria unui cerc. Fișierul „main.c” include antetul C++ și apelează direct „Circle_Carea”. Vezi următorul cod:

#include „cercle.h”

int principal ( ) {

dubla rads = 5.0 ;

dubla zonă = Circle_CArea ( rads ) ;

printf ( „Aria cercului este:  %.2f \n ' , zonă ) ;

întoarcere 0 ;

}

Acest program simplu C calculează și imprimă aria unui cerc utilizând o funcție care este definită în fișierul anterior numit „cercle.h”. Să defalcăm codul:

#include „cercle.h”

Această linie include conținutul fișierului antet „circle.h” din program. Fișierul antet conține probabil declarațiile de funcție sau macrocomenzile care sunt legate de calculele cercului.

int principal ( ) {

Execuția programului începe cu funcția principală, punctul de intrare pentru programele C.

dubla rads = 5.0 ;

O variabilă rads de tip double este declarată și atribuită cu valoarea 5.0. Această variabilă reprezintă probabil raza cercului.

dubla zonă = Circle_CArea ( rads ) ;

O funcție numită „Circle_Carea” este apelată cu raza rads ca argument și rezultatul este stocat în zona variabilă.

printf ( „Aria cercului este: %.2f \n ' , zonă ) ;

Rezultatul este tipărit pe consolă folosind „printf”. Șirul „Aria cercului este: %.2f\n” este un șir de format cu un substituent „%f” pentru valoarea zonei. „.2” în „%.2f” specifică faptul că trebuie afișate doar două zecimale.

întoarcere 0 ;

Funcția principală se încheie prin returnarea 0 care indică o execuție reușită a programului către sistemul de operare.

În rezumat, fișierul antet declară o funcție cu legătură C, iar fișierul de implementare definește logica pentru calcularea ariei unui cerc. Această separare permite ca codul să fie folosit atât în ​​programele C, cât și în cele C++. Consultați rezultatul codului care este dat în imaginea următoare:

După cum puteți vedea în rezultat, aria calculată a cercului este 78,54, care este calculul ariei = 3,14*5*5 = 78,54. Funcția de calculare a zonei este definită în fișierul antet „circle.h” care este apoi apelat în fișierul C++ cu ajutorul extern „C”.

Concluzie

În acest ghid, v-am ghidat prin procesul de integrare a C++ în programele dvs. C. Integrarea unei funcționalități C++ în bazele de cod C necesită o luare în considerare atentă a indicatorilor, alterarea numelor și fișierele de antet cu scop dublu. Exemplele oferite ilustrează o abordare practică pentru realizarea acestei integrări. Acum că ați văzut cum să conectați aceste două limbaje de programare, aveți mai multe instrumente. Deblocarea puterii C++ în timp ce lucrați cu C ar putea oferi proiectelor dvs. un nivel cu totul nou de funcționalitate.