Comment mélanger C et C++ ? [C/C++] - C - Programmation
Marsh Posté le 17-10-2006 à 08:48:22
Avant tout, pourquoi utiliser des listes faites en C dans un programme C++ ? De telles choses existent déjà !!! (cf. STL)
Sinon pour ton problème montre un peu ton code, cela peut aider.
Marsh Posté le 17-10-2006 à 08:58:23
nanawel a écrit : Voilà j'ai 2 fichiers qui gèrent les liste chainées simples (ListeSimple.c et ListeSimple.h) écrits en C "pur". Lorsque je fais une directive include dans un fichier test.C (en C++) et que j'essaie d'appeler une fonction implémentée dans le fichier ListeSimple.c la compilation me génère une erreur : |
Il est tout à fait possible d'utiliser des fonctions écrites (et compilées) en C dans un projet C++. Il suffit d'indiquer au compilateur C++ qu'il doit utiliser les noms 'purs' du C et non des noms 'décorés' du C++.
Il y a donc une précaution à prendre au niveau du header :
Il faut encadrer la définition des prototypes par
Code :
|
Pour rester compatible avec le C (extern "C" n'est pas du C, c'est du C++), on active ces instructions uniquement en C++ :
Code :
|
Marsh Posté le 17-10-2006 à 15:45:34
Emmanuel Delahaye a écrit : Il est tout à fait possible d'utiliser des fonctions écrites (et compilées) en C dans un projet C++. Il suffit d'indiquer au compilateur C++ qu'il doit utiliser les noms 'purs' du C et non des noms 'décorés' du C++.
|
Ah ben la voilà la subtilité que je cherchais ! Merci beaucoup Emmanuel je teste dès ce soir et je tiens au courant du résultat !
Marsh Posté le 17-10-2006 à 18:17:06
Ok merci c'était bien ça !
Encore merci et bonne journée !
Marsh Posté le 12-09-2013 à 22:33:10
Bonjour.
Un grand merci.
Comme quoi même après plusieurs années c'est un post super utile.
Cela fait 2 jours que je galère pour faire l'édition de liens.
Merci.
jf
Marsh Posté le 17-10-2006 à 07:21:14
Salut à tous,
Voilà j'ai 2 fichiers qui gèrent les liste chainées simples (ListeSimple.c et ListeSimple.h) écrits en C "pur". Lorsque je fais une directive include dans un fichier test.C (en C++) et que j'essaie d'appeler une fonction implémentée dans le fichier ListeSimple.c la compilation me génère une erreur :
Alors que les fonctions en question "sll_new()" et "sll_insert()" sont bien présentes et implémentées dans le fichier ListeSimple.c/h !
Je galère sur cette erreur (toute bête j'espère) depuis un moment et je vois pas d'où ça peut venir, à part d'une subtilité à faire pour mélanger C et C++.
Que ceux qui ont une idée m'apporte un peu d'espoir svp