Appeler C++ depuis C

Appeler C Depuis C



En programmation, il est souvent nécessaire que C et C++ fonctionnent ensemble, généralement lors de la mise à jour d'un ancien code ou de la combinaison de modules dans différents langages. L'utilisation du code C++ dans les programmes C est très utile pour les programmeurs, notamment lors de la mise à jour d'un ancien logiciel ou du mélange des parties écrites dans les deux langages. Ce guide vous montrera comment faire fonctionner les fonctions C++ avec C avec des exemples simples et utiles. Faire appel au C++ depuis un programme C peut sembler délicat, mais cet article explique tout étape par étape, il est donc facile de suivre et de commencer à utiliser les deux langages ensemble. Ce guide est utile pour vos projets quel que soit votre niveau de connaissances en programmation.

Comprendre les bases

Lorsqu'il s'agit d'invoquer les fonctions C++ à partir du C et d'utiliser les objets C++, plusieurs éléments clés doivent être pris en compte :

Référencement des classes C++ en C

Une approche courante pour référencer les classes C++ en C consiste à utiliser des pointeurs vers des classes qui peuvent être transmises entre le code C et C++.







Nom Mangle

Pour éviter les changements de nom qui peuvent affecter une reconnaissance en C, il est crucial de garder les noms cohérents. Cela garantit que C peut identifier et utiliser correctement les fonctions et les objets.



Fichier d'en-tête à double usage

Un fichier d’en-tête joue un rôle central, remplissant un double objectif en C et en C++. Il inclut les définitions de classe reconnaissables en C++ et encapsule les fonctions d'accesseur pour C.



Comment appeler C++ depuis C

Pour appeler les fonctions C++ depuis C, la déclaration extern « C » est cruciale. Lorsqu'il est appliqué aux fonctions C++, il garantit que les noms de fonctions sont traités dans le style C (en utilisant la liaison C) pendant le processus de compilation. C ne reconnaît pas les fonctionnalités C++ telles que la surcharge de fonctions et la modification des noms qui peuvent survenir lors de la compilation C++. En utilisant extern « C », le compilateur C++ génère les noms de fonctions qui adhèrent aux conventions C, permettant une interopérabilité transparente. Cette déclaration fournit une interface standardisée, permettant à un code C d'accéder et d'utiliser les fonctions C++ sans rencontrer de conflits de noms ou de problèmes de compatibilité. Voici des exemples d’appel de C++ à partir de C. Pour comprendre comment fonctionne cette combinaison, examinons de plus près les instances.





Exemples pratiques : calculer l'aire d'un cercle en appelant C++ depuis C

Dans cet exemple simple, nous allons vous expliquer comment calculer l'aire d'un cercle en appelant une fonction C++ en C. Ce code se compose d'un fichier d'en-tête (circle.h) et d'un fichier d'implémentation (circle.cpp). La première partie du code implique la déclaration extern C dans le fichier d'en-tête. Voir le code suivant. Ensuite, développons chaque ligne de code individuellement :

#ifndef CIRCLE_AREA
#définir CIRCLE_AREA

externe 'C' {

double calculer_CArea ( double rad ) ;

}

#fin si

double Cercle_CArea ( double rad ) {

retour 3.14159 * rad * rad ;

}

Décomposons chaque partie :



#ifndef CIRCLE_AREA et #define CIRCLE_AREA

Ces lignes font partie des gardes d'inclusion qui garantissent que le contenu du fichier d'en-tête n'est inclus qu'une seule fois dans le processus de compilation. Si CIRCLE_AREA n'est pas défini, le code suivant sera inclus et CIRCLE_AREA sera défini.

externe 'C'

Cette syntaxe est utilisée pour déclarer que la fonction suivante a une liaison C. Ceci est essentiel lors de l’écriture d’un code qui sera appelé à la fois en C et en C++.

double calculer_CArea ( double rad ) ;

Cette ligne déclare une fonction nommée « calculate_Carea » qui prend un double argument (rad) et renvoie un double.

La déclaration externe « C » dans le fichier d'en-tête indique au compilateur d'utiliser une liaison de style C pour la fonction, la rendant ainsi appelable à partir du code C. Utilisez ce code pour trouver l'aire d'un cercle en l'enregistrant dans un fichier « circle.h ». Une fois que vous avez enregistré ce fichier d'en-tête, tout ce que vous avez à faire est de l'inclure comme fichier d'en-tête dans le programme C++ et d'exécuter la fonction souhaitée. Voici le code C qui calcule l’aire d’un cercle. Le fichier « main.c » inclut l’en-tête C++ et appelle directement « Circle_Carea ». Voir le code suivant :

#include 'cercle.h'

int principal ( ) {

double rads = 5.0 ;

double zone = Cercle_CArea ( rads ) ;

imprimer ( 'L'aire du cercle est :  %.2f \n ' , zone ) ;

retour 0 ;

}

Ce simple programme C calcule et imprime l'aire d'un cercle à l'aide d'une fonction définie dans le fichier précédent nommé « circle.h ». Décomposons le code :

#include 'cercle.h'

Cette ligne inclut le contenu du fichier d'en-tête « circle.h » dans le programme. Le fichier d'en-tête contient probablement les déclarations de fonction ou les macros liées aux calculs de cercles.

int principal ( ) {

L’exécution du programme commence par la fonction principale, point d’entrée des programmes C.

double rads = 5.0 ;

Une variable rads de type double est déclarée et affectée de la valeur 5.0. Cette variable représente probablement le rayon du cercle.

double zone = Cercle_CArea ( rads ) ;

Une fonction nommée « Circle_Carea » est appelée avec le rayon rads comme argument et le résultat est stocké dans la zone variable.

imprimer ( 'L'aire du cercle est : %.2f \n ' , zone ) ;

Le résultat est imprimé sur la console en utilisant « printf ». La chaîne « L'aire du cercle est : %.2f\n » est une chaîne de format avec un espace réservé « %f » pour la valeur de l'aire. Le « .2 » dans « %.2f » précise que seules deux décimales doivent être affichées.

retour 0 ;

La fonction principale se termine en renvoyant 0, ce qui indique une exécution réussie du programme au système d'exploitation.

En résumé, le fichier d'en-tête déclare une fonction avec liaison C et le fichier d'implémentation définit la logique de calcul de l'aire d'un cercle. Cette séparation permet au code d'être utilisé à la fois dans les programmes C et C++. Reportez-vous à la sortie du code donné dans l'image suivante :

Comme vous pouvez le voir dans le résultat, l'aire calculée du cercle est de 78,54, ce qui correspond au calcul de l'aire = 3,14*5*5 = 78,54. La fonction pour calculer la surface est définie dans le fichier d'en-tête « circle.h » qui est ensuite appelé dans le fichier C++ à l'aide de extern « C ».

Conclusion

Nous vous avons guidé tout au long du processus d'intégration du C++ dans vos programmes C dans ce guide. L'intégration d'une fonctionnalité C++ dans les bases de code C nécessite un examen attentif des pointeurs, de la modification des noms et des fichiers d'en-tête à double usage. Les exemples fournis illustrent une approche pratique pour réaliser cette intégration. Maintenant que vous avez vu comment connecter ces deux langages de programmation, vous disposez de davantage d’outils. Libérer la puissance du C++ tout en travaillant avec C pourrait donner à vos projets un tout nouveau niveau de fonctionnalités.