Truqueu a C++ des de C

Truqueu A C Des De C



En programació, sovint cal que C i C++ treballin junts, normalment quan s'actualitza un codi antic o es combinen els mòduls en diversos idiomes. L'ús del codi C++ als programes C és molt útil per als programadors, sobretot quan actualitzeu un programari antic o barregeu les parts escrites en ambdós idiomes. Aquesta guia us mostrarà com fer que les funcions C++ funcionin amb C amb exemples senzills i útils. Trucar a C++ des d'un programa C pot semblar complicat, però aquest article ho explica tot pas a pas, de manera que és fàcil seguir-lo i començar a utilitzar els dos idiomes junts. Aquesta guia és útil per als vostres projectes independentment del vostre nivell de coneixements de programació.

Entendre els fonaments bàsics

Quan es tracta d'invocar les funcions C++ des de C i utilitzar els objectes C++, cal tenir en compte diversos elements clau:

Referència a les classes C++ en C

Un enfocament comú per fer referència a les classes C++ en C implica utilitzar punters a classes que es poden passar entre el codi C i C++.







Nom Mangle

Per evitar els canvis de nom que poden afectar un reconeixement en C, és crucial mantenir els noms coherents. Això garanteix que C pugui identificar i utilitzar correctament les funcions i els objectes.



Fitxer de capçalera per a un doble propòsit

Un fitxer de capçalera té un paper fonamental i té un doble propòsit tant per a C com per a C++. Inclou les definicions de classe que són reconeixibles per C++ i encapsula les funcions d'accés per a C.



Com trucar a C++ des de C

Per cridar les funcions C++ des de C, la declaració externa 'C' és crucial. Quan s'aplica a funcions C++, assegura que els noms de les funcions es tracten a l'estil C (utilitzant l'enllaç C) durant el procés de compilació. C no reconeix les característiques de C++ com ara la sobrecàrrega de funcions i la alteració de noms que es poden produir durant la compilació de C++. Utilitzant extern 'C', el compilador C++ genera els noms de funcions que s'adhereixen a les convencions C, permetent una interoperabilitat perfecta. Aquesta declaració proporciona una interfície estandarditzada, que permet que un codi C accedeixi i utilitzi les funcions de C++ sense trobar-se amb conflictes de noms o problemes de compatibilitat. Els següents són els exemples de crida a C++ des de C. Per entendre com funciona aquesta combinació, mirem més de prop les instàncies.





Exemples pràctics: calculeu l'àrea d'un cercle cridant a C++ des de C

En aquest exemple senzill, us guiarem sobre com podeu calcular l'àrea d'un cercle cridant una funció C++ en C. Aquest codi consta d'un fitxer de capçalera (circle.h) i un fitxer d'implementació (circle.cpp). La primera part del codi implica la declaració externa C al fitxer de capçalera. Vegeu el codi següent. A continuació, anem a elaborar cada línia de codi individualment:

#ifndef CIRCLE_AREA
#definir CIRCLE_AREA

extern 'C' {

doble calcula_CArea ( doble rad ) ;

}

#endif

doble Àrea_Cercle ( doble rad ) {

tornar 3.14159 * rad * rad ;

}

Desglossem cada part:



#ifndef CIRCLE_AREA i #define CIRCLE_AREA

Aquestes línies formen part de les guardes d'inclusió que garanteixen que el contingut del fitxer de capçalera només s'inclogui una vegada en el procés de compilació. Si no es defineix CIRCLE_AREA, s'inclourà el codi següent i es definirà CIRCLE_AREA.

extern 'C'

Aquesta sintaxi s'utilitza per declarar que la funció següent té un enllaç C. Això és essencial a l'hora d'escriure un codi que es cridarà tant des de C com C++.

doble calcula_CArea ( doble rad ) ;

Aquesta línia declara una funció anomenada 'calculate_Carea' que pren un argument doble (rad) i retorna un doble.

La declaració externa 'C' al fitxer de capçalera informa al compilador que utilitzi un enllaç d'estil C per a la funció, fent-la invocable des del codi C. Utilitzeu aquest codi per trobar l'àrea d'un cercle desant-lo en un fitxer 'circle.h'. Un cop deseu aquest fitxer de capçalera, tot el que heu de fer és incloure-lo com a fitxer de capçalera al programa C++ i realitzar la funció desitjada. El següent és el codi C que calcula l'àrea d'un cercle. El fitxer 'main.c' inclou la capçalera C++ i crida directament a 'Circle_Carea'. Vegeu el codi següent:

#inclou 'cercle.h'

int principal ( ) {

doble rads = 5.0 ;

doble zona = Àrea_Cercle ( rads ) ;

imprimirf ( 'L'àrea del cercle és:  %.2f \n ' , zona ) ;

tornar 0 ;

}

Aquest senzill programa en C calcula i imprimeix l'àrea d'un cercle mitjançant una funció que es defineix al fitxer anterior anomenat 'circle.h'. Desglossem el codi:

#inclou 'cercle.h'

Aquesta línia inclou el contingut del fitxer de capçalera “circle.h” del programa. El fitxer de capçalera probablement conté les declaracions de funcions o macros relacionades amb els càlculs del cercle.

int principal ( ) {

L'execució del programa comença amb la funció principal, el punt d'entrada dels programes C.

doble rads = 5.0 ;

Es declara una variable rads de tipus double i s'assigna amb el valor de 5.0. Aquesta variable probablement representa el radi del cercle.

doble zona = Àrea_Cercle ( rads ) ;

Es crida una funció anomenada 'Circle_Carea' amb els rads de radi com a argument i el resultat s'emmagatzema a l'àrea variable.

imprimirf ( 'L'àrea del cercle és: %.2f \n ' , zona ) ;

El resultat s'imprimeix a la consola mitjançant 'printf'. La cadena 'L'àrea del cercle és: %.2f\n' és una cadena de format amb un marcador de posició '%f' per al valor de l'àrea. El '.2' a '%.2f' especifica que només s'han de mostrar dos decimals.

tornar 0 ;

La funció principal conclou tornant 0 que indica una execució correcta del programa al sistema operatiu.

En resum, el fitxer de capçalera declara una funció amb enllaç C i el fitxer d'implementació defineix la lògica per calcular l'àrea d'un cercle. Aquesta separació permet que el codi s'utilitzi tant en programes C com en C++. Consulteu la sortida del codi que es mostra a la imatge següent:

Com podeu veure a la sortida, l'àrea calculada del cercle és 78,54, que és el càlcul de l'àrea = 3,14*5*5 = 78,54. La funció per calcular l'àrea es defineix al fitxer de capçalera 'circle.h' que després s'anomena al fitxer C++ amb l'ajuda de l'extern 'C'.

Conclusió

En aquesta guia us hem guiat pel procés d'integració de C++ als vostres programes C. La integració d'una funcionalitat de C++ a les bases de codi C requereix una consideració acurada dels punters, la manipulació de noms i els fitxers de capçalera de doble propòsit. Els exemples proporcionats il·lustren un enfocament pràctic per aconseguir aquesta integració. Ara que heu vist com connectar aquests dos llenguatges de programació, teniu més eines. Desbloquejar el poder de C++ mentre es treballa amb C podria oferir als vostres projectes un nivell de funcionalitat totalment nou.