IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Du C dans du C++


Sujet :

C++

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par d�faut Du C dans du C++
    Bonjour,

    Voila, j'aimerai r�utiliser un ancien code C dans du code C++, est-ce possible?

    Merci.

  2. #2
    Membre �clair�
    Avatar de warubi
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    399
    D�tails du profil
    Informations personnelles :
    �ge : 33
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 399
    Par d�faut
    Ca depend et en plus tu ne beneficiera pas des avantages du c++ (les objets...)

  3. #3
    Membre confirm�
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    180
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 180
    Par d�faut
    Il me semble qu'il suffit de mettre un extern "C" autour de ton code :

    extern "C" { //ton code C }
    Mais je crois que �a ne marche que si ton code est constit� d'un ensemble de fonctions.

    Ne fais pas un truc du genre :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    //code c++
    //code C
    //code c++
    fait

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    extern "C"
    {
    void f_c();
    }
     
    //code c++
    f_c();
    //code c++
    Sinon tu risque de t'embrouiller voir, dans un cas extr�me, que ton code ne compile pas.

  4. #4
    Membre �m�rite
    Avatar de mamelouk
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    867
    D�tails du profil
    Informations personnelles :
    Localisation : France, Rh�ne (Rh�ne Alpes)

    Informations forums :
    Inscription : Mai 2005
    Messages : 867
    Par d�faut


    je capte rien. les compilateurs C++ ne savent pas compiler du C ????

    j'avais jamais remarqu�, parce que je connais plein de gens qui continuent � �crire comme en C (que des structs et des fonctions, utilisant des pointeurs, char*), avec qq trucs du C++ (std::list par exemple) et ca marche tr�s bien

  5. #5
    Membre exp�riment�
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par d�faut
    Citation Envoy� par mamelouk

    je capte rien. les compilateurs C++ ne savent pas compiler du C ????
    Ils devraient ? C++ c'est pas du C, et plus �a va plus �a va �tre difficile.
    (le C divergeant du C++ de plus en plus)

    Quand tu dis r�utiliser du code, tu veux appeler des fonctions d'une lib en C ou tu veux recompiler un source C avec un compilo C++ ?

    Dans le premier cas, c'est plut�t les extern "C",
    dans le deuxi�me tu changes l'extension du source de .c � .cpp (ou ce que tu veux), et tu recompiles en C++ (et prie).

    Dans tous les cas, c'est "plus ou moins" comme dirait loufoque (peut �tre moins que plus d'ailleurs)


    Apr�s, tu peux r��crire ton source en changeant les char* par des std::string
    par exemple (apr�s tout tu as d�j� vu les std::list), et les pointeurs par des r�f�rences.

  6. #6
    Expert confirm�
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activit� : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par d�faut
    Voici un petit apper�u des incompatibilit�s entre le C et le C++: http://nicolasj.developpez.com/artic...ompatibilites/

    En ce qui concerne les fonctions, une grande diff�rence entre les fonctions C et les fonctions C++ r�side au niveau du code assembleur g�n�r� par le compilateur. En effet, en C++, les nom de fonctions sont "d�cor�s" selon qu'elles sont membres d'une classe ou pas, et selon leur prototype. Ce m�canisme de d�coration des noms de fonction permet notamment d'implanter la surcharge des fonctions.

    Si on d�sire utiliser une fonction C dans du code C++, il faut informer le compilateur que le nom de la fonction en question n'est pas d�cor� en utilisant la syntaxe:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    extern "C" void fonction(int, int);
    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  7. #7
    R�dacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Par d�faut
    Citation Envoy� par mamelouk


    je capte rien. les compilateurs C++ ne savent pas compiler du C ????
    C et C++ sont deux langages diff�rents :
    http://nicolasj.developpez.com/artic...ompatibilites/

  8. #8
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    extern "C" active le linkage compatible C, et du coup emp�che l'overloading.

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Un exemple d�taill� de ce qu'on peut faire dans ce thread:
    http://www.developpez.net/forums/sho...d.php?t=256281
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par d�faut
    Quand tu dis r�utiliser du code, tu veux appeler des fonctions d'une lib en C ou tu veux recompiler un source C avec un compilo C++ ?
    J'aimerai recompiler un source C avec un compilo C++, clairement j'aimerai reprendre mon ancien code dans sa globalit� et y inserrer des fonctions C++, encore plus clairement j'aimerai r�utiliser un codec bas d�bit utilisant des biblioth�ques GNU gsl et TSP �crit en C dans un code C++ pour faire un plugin VST avec une librairie VST SDK, encore plus clairement, j'aimerai r�utiliser mon bloc de d�tection des harmoniques par la m�thode des plus grands pics sur un mod�le it�ratif d'analyse du r�sidu signal - son de synth�se pour faire un synth� additif? Ok?

  11. #11
    R�dacteur
    Avatar de Laurent Gomila
    Profil pro
    D�veloppeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    D�tails du profil
    Informations personnelles :
    �ge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par d�faut
    Copie / colle ton code C dans ton projet C++, et vois si tu as des erreurs de compilation.

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    241
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 241
    Par d�faut
    Ok merci, avec tous vos conseils je suppose que je parviendrai � mes fins. :-)

  13. #13
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Citation Envoy� par Laurent Gomila
    Copie / colle ton code C dans ton projet C++, et vois si tu as des erreurs de compilation.
    C'est crade, quand m�me.

    Mais �a peut marcher.
    Dans ce cas, je n'appelle pas �a r�utiliser, par contre. J'appelle �a porter, ou convertir...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  14. #14
    Expert confirm�
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    D�cembre 2003
    Messages
    3 549
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur d�veloppement logiciels

    Informations forums :
    Inscription : D�cembre 2003
    Messages : 3 549
    Par d�faut
    C'est crade, quand m�me.
    Le danger ce serait que �a compile mais que �a ait un comportement diff�rent.
    Il y a quand m�me tr�s peu de chances que �a arrive.

  15. #15
    Membre extr�mement actif

    Homme Profil pro
    Ing�nieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Ing�nieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Par d�faut
    Le danger ce serait que �a compile mais que �a ait un comportement diff�rent.
    Je suis curieux de voir �a,ne serait-ce qu'un aper�u car comme tu dis

    Il y a quand m�me tr�s peu de chances que �a arrive.

  16. #16
    Expert confirm�

    Inscrit en
    Novembre 2005
    Messages
    5 145
    D�tails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 5 145
    Par d�faut
    * Si on parle de C90, on peut jouer avec les commentaires:
    * sizeof('a') retourne 1 en C++ et la meme valeur que sizeof(int) en C.
    * inline (present en C99) a une semantique differente de celle de C++; ca ne m'etonnerait pas qu'il soit possible d'ecrire quelque chose de conforme dans les deux langages avec un comportement different; mais je n'ai pas cherche a pousser dans cette voie-la.

    Je ne vois pas d'autres differences silentieuses pour le moment, mais il est possible qu'il en en ai.

  17. #17
    Membre exp�riment�
    Avatar de David Fleury
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 253
    Par d�faut
    Il y a pas mal de choses par l�
    http://david.tribble.com/text/cdiffs.htm

    L'init des char[x] pourrait poser des probl�mes par exemple

Discussions similaires

  1. DBLookupComboBox dans DBGrid
    Par KThrax dans le forum Bases de donn�es
    R�ponses: 7
    Dernier message: 24/08/2004, 15h18
  2. g�rer les jpg dans une fenetre directdraw???
    Par Anonymous dans le forum DirectX
    R�ponses: 1
    Dernier message: 14/06/2002, 13h39
  3. enregistrer dans un fichier avec une appli mdi
    Par ferrari dans le forum C++Builder
    R�ponses: 4
    Dernier message: 05/05/2002, 15h17
  4. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    R�ponses: 3
    Dernier message: 30/04/2002, 10h44
  5. Documentation DirectX dans C++Builder 3
    Par srvremi dans le forum DirectX
    R�ponses: 1
    Dernier message: 26/04/2002, 09h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo