Bonjour,
Voila, j'aimerai r�utiliser un ancien code C dans du code C++, est-ce possible?
Merci.
Bonjour,
Voila, j'aimerai r�utiliser un ancien code C dans du code C++, est-ce possible?
Merci.
Ca depend et en plus tu ne beneficiera pas des avantages du c++ (les objets...)
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 :
fait
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 //code c++ //code C //code c++
Sinon tu risque de t'embrouiller voir, dans un cas extr�me, que ton code ne compile pas.
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++
![]()
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
Ils devraient ? C++ c'est pas du C, et plus �a va plus �a va �tre difficile.Envoy� par mamelouk
(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.
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:
Thierry
Code : S�lectionner tout - Visualiser dans une fen�tre � part extern "C" void fonction(int, int);
"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++
+
C et C++ sont deux langages diff�rents :Envoy� par mamelouk
http://nicolasj.developpez.com/artic...ompatibilites/
extern "C" active le linkage compatible C, et du coup emp�che l'overloading.
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.
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?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++ ?
Copie / colle ton code C dans ton projet C++, et vois si tu as des erreurs de compilation.
Mieux que SDL : d�couvrez SFML
Mes tutoriels 2D/3D/Jeux/C++, Cours et tutoriels C++, FAQ C++, Forum C++.
Ok merci, avec tous vos conseils je suppose que je parviendrai � mes fins. :-)
C'est crade, quand m�me.Envoy� par Laurent Gomila
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.
Le danger ce serait que �a compile mais que �a ait un comportement diff�rent.C'est crade, quand m�me.
Il y a quand m�me tr�s peu de chances que �a arrive.
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.
* 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.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2 x = a//* Na! */ 2 + 1;
* 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.
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
Partager