C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

C vers C++

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Guest






PostPosted: Fri Oct 06, 2006 8:46 pm    Post subject: C vers C++ Reply with quote



Bonjour a tous,

voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.
J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Antoine.
Back to top
Michael K.
Guest





PostPosted: Sun Oct 08, 2006 5:49 pm    Post subject: Re: C vers C++ Reply with quote



boolegue (AT) gmail (DOT) com a écrit :
Quote:
Bonjour a tous,

voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.
J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Antoine.


Je pense qu'a moins de repenser entierement le code pour le rendre
plus oriente objet, le code final sera plutot proche de ce qu'on
appelle du "C+" parfois (du C avec des cout/cin et deux trois bricoles
pas vraiment representatives du langage.)

Sinon il y a un bouquin qui ne m'a pas l'air foncierement mauvais,
"Refactoring Improving the Design of Existing Code" qui peut
eventuellement donner des pistes pour savoir par ou commencer generalement.


--
Michael K. (epitech)
http://etudiant.epitech.net/~meik/
"SoftIce est avant tout un desassembleur."
E.D au proces en appel de Guillermito
Back to top
ByB
Guest





PostPosted: Sun Oct 08, 2006 10:37 pm    Post subject: Re: C vers C++ Reply with quote



boolegue (AT) gmail (DOT) com a formulé ce vendredi :
Quote:
Bonjour a tous,

voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.
J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Antoine.

A mon avis, tu devrais déjà identifier les objets, créer les classes
correspondantes, et puis implémenter les méthodes ...

--
C'est facile. C'est complètement automatique. Il suffit de cliquer. Il
existe un outil qui fait ça.
Back to top
Marc Boyer
Guest





PostPosted: Mon Oct 09, 2006 11:24 am    Post subject: Re: C vers C++ Reply with quote

Le 06-10-2006, boolegue (AT) gmail (DOT) com <boolegue (AT) gmail (DOT) com> a écrit :
Quote:
voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.

Tu débutes en C ? Mais quelle est ta connaissance de C++ ?

Quote:
J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Est-ce que cela en vaut le coup ?
Cela dépend beaucoup des modifs que tu as à faire du le code.

Remplacer des printf par des cout comme le disait un autre
contributeur est dangeueux, car comme ils ne partagent
pas les même buffer, l'ordre des écritures n'est pas garantit.

Tu peux toujours, pour chaque structure X, identifier les
fonctions qui n'ont qu'un paramètre de type X* ou X et en
faire des fonctions membres. Mais cela demande de modifier
tous les appels...
L'introduction du const implique aussi de tels changements
un peu partout.

La première chose à faire serait AMHA d'imaginer que chaque
struct est une classe et de tenter de faire le diagramme
de classe, de formaliser les relations.

Mais bon, je dis ça pour lancer le débat car pas grand monde
n'a répondu, mais ma seule tentative de reprise de code
a été à ce jour un échec.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
Back to top
Guest






PostPosted: Tue Oct 10, 2006 10:21 pm    Post subject: Re: C vers C++ Reply with quote

Marc Boyer wrote:
Quote:
Le 06-10-2006, boolegue (AT) gmail (DOT) com <boolegue (AT) gmail (DOT) com> a écrit :
voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.

Tu débutes en C ? Mais quelle est ta connaissance de C++ ?

Mes connaissances en C++ se limitent a celles que je viens d'acquerir
en C ! Celles en OOP se limitent a celles du disponibles en fortran,
plus ce que j ai pu lire sur le sujet.
J ai pas mal d experience en fortran, et j y mets autant de OOP que
possible.
Difficile de s en passer maintenant !

Quote:

J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Est-ce que cela en vaut le coup ?
Cela dépend beaucoup des modifs que tu as à faire du le code.

Peut etre que ca ne vaut pas le coup, je ne connais pas encore assez
bien ni le code, ni le C++ pour en etre certain.
Mais d une part je suis curieux d apprendre le C++ et des concepts OOP
plus pousses que ceux du fortran actuel Smile.
D autre part les premieres modifs que je dois faire me semblent
correspondre a ce que peut faire le C++.
Ce code traite, entre autre, de particules, ils a etait ecrit avec des
particules spheriques, et je dois faire en sorte qu il puisse traiter a
priori n importe quel type de particules.
Cela me fait penser a un exemple que j ai lu sur le C++, ou une classe
"forme" est capable de gerer differents objets de type "cercle",
"carre", etc ...

Quote:

Remplacer des printf par des cout comme le disait un autre
contributeur est dangeueux, car comme ils ne partagent
pas les même buffer, l'ordre des écritures n'est pas garantit.

Tu peux toujours, pour chaque structure X, identifier les
fonctions qui n'ont qu'un paramètre de type X* ou X et en
faire des fonctions membres. Mais cela demande de modifier
tous les appels...
L'introduction du const implique aussi de tels changements
un peu partout.

C est ce que j ai essayer de faire jusque la.
Le code est constitue d une douzaine de fichiers, pouvant faire 5000
lignes !
Au debut j ai commence a simplement ajouter les modifs tellequelles, ca
m a vite pris la tete de suivre chaque appel d un fichier a l autre et
meme de me perdre dans un seul fichier !
J ai alors decoupe les choses que je changes par objet, rajoute du
static aux fonctions locales, du const aux variables passees a ne pas
modifier.

Quote:
La première chose à faire serait AMHA d'imaginer que chaque
struct est une classe et de tenter de faire le diagramme
de classe, de formaliser les relations.

Mais bon, je dis ça pour lancer le débat car pas grand monde
n'a répondu, mais ma seule tentative de reprise de code
a été à ce jour un échec.

Marc Boyer

En fait, la question que je me pose est de savoir s il est possible de
mixer du C et C++ ? Par exemple, est il possible d utiliser l appel par
reference a la sauce C++ depuis du C ? Et plein d autres questions ...
Est ce que je dois renomer tout les fichiers en .cpp ?
Tout est encore tres flou pour ce qui est de comment commencer a mettre
du C++ la dedans.

Merci beaucoup pour ton aide. :-)

Antoine.
Back to top
Marc Boyer
Guest





PostPosted: Wed Oct 11, 2006 7:55 am    Post subject: Re: C vers C++ Reply with quote

Le 10-10-2006, boolegue (AT) gmail (DOT) com <boolegue (AT) gmail (DOT) com> a écrit :
Quote:
Marc Boyer wrote:
Le 06-10-2006, boolegue (AT) gmail (DOT) com <boolegue (AT) gmail (DOT) com> a écrit :
voila je debute en C depuis 2 mois et je dois modifier un code (30000
lignes, ce qui est gros pour moi !) ecrit dans ce language.

Tu débutes en C ? Mais quelle est ta connaissance de C++ ?

Mes connaissances en C++ se limitent a celles que je viens d'acquerir
en C ! Celles en OOP se limitent a celles du disponibles en fortran,
plus ce que j ai pu lire sur le sujet.
J ai pas mal d experience en fortran, et j y mets autant de OOP que
possible.
Difficile de s en passer maintenant !

Oui, la structuration du code 'orienté objet' est un bon
paradigme.

Quote:
J ai deja fait quelques modifs, mais la facon dont est ecrit ce code me
rend dingue : pas un gramme de modularite !
Alors je suis a la recherche de conseils pour introduire un peu d'OOP
dedans, et petit a petit transformer le code entierement en C++.
Comment dois-je m'y prendre ?

Est-ce que cela en vaut le coup ?
Cela dépend beaucoup des modifs que tu as à faire du le code.

Peut etre que ca ne vaut pas le coup, je ne connais pas encore assez
bien ni le code, ni le C++ pour en etre certain.
Mais d une part je suis curieux d apprendre le C++ et des concepts OOP
plus pousses que ceux du fortran actuel Smile.

C'est une motivation.

Quote:
D autre part les premieres modifs que je dois faire me semblent
correspondre a ce que peut faire le C++.
Ce code traite, entre autre, de particules, ils a etait ecrit avec des
particules spheriques, et je dois faire en sorte qu il puisse traiter a
priori n importe quel type de particules.
Cela me fait penser a un exemple que j ai lu sur le C++, ou une classe
"forme" est capable de gerer differents objets de type "cercle",
"carre", etc ...

En effet.

Quote:
Remplacer des printf par des cout comme le disait un autre
contributeur est dangeueux, car comme ils ne partagent
pas les même buffer, l'ordre des écritures n'est pas garantit.

Tu peux toujours, pour chaque structure X, identifier les
fonctions qui n'ont qu'un paramètre de type X* ou X et en
faire des fonctions membres. Mais cela demande de modifier
tous les appels...
L'introduction du const implique aussi de tels changements
un peu partout.

C est ce que j ai essayer de faire jusque la.
Le code est constitue d une douzaine de fichiers, pouvant faire 5000
lignes !
Au debut j ai commence a simplement ajouter les modifs tellequelles, ca
m a vite pris la tete de suivre chaque appel d un fichier a l autre et
meme de me perdre dans un seul fichier !
J ai alors decoupe les choses que je changes par objet, rajoute du
static aux fonctions locales, du const aux variables passees a ne pas
modifier.

Une sorte de premier rafraichissement, qui permet de plus de
comprendre un peu mieux ce qui se passe.

Quote:
La première chose à faire serait AMHA d'imaginer que chaque
struct est une classe et de tenter de faire le diagramme
de classe, de formaliser les relations.

Mais bon, je dis ça pour lancer le débat car pas grand monde
n'a répondu, mais ma seule tentative de reprise de code
a été à ce jour un échec.

En fait, la question que je me pose est de savoir s il est possible de
mixer du C et C++ ? Par exemple, est il possible d utiliser l appel par
reference a la sauce C++ depuis du C ? Et plein d autres questions ...

Oui et non.
Strictement parlant, C et C++ sont deux langages différents.
Un code C se compile avec un compilateur C, un code C++ se
compile avec un compilateur C++, et il existe en C++ le 'extern "C"',
qui permet d'appeler depuis du C du code C++ et inversement.

En pratique, 99% du code C raisonnable écrit compile aussi
bien en C++ et donne le même résultat. Mais si tu tombes sur
le 1%, tu as du mal.
De nombreux programmeurs C font aussi compiler leur code
C par le compilo C *et* par le compilo C++ parce qu'ils le
considèrent comme plus tatillon, pour détecter le plus de code
suspect. Mais le code exécutable est généré par le compilo C.
Ma référence sur le sujet, c'est le 'Harbison & Steele', qui
est un bouquin de C qui liste en fin de chaque chapitre
les parties de C qui ne sont pas du C++.

Quote:
Est ce que je dois renomer tout les fichiers en .cpp ?

Ca forcera ton compilo (VC ?) à considérer le code C comme
du code C++.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
Back to top
Guest






PostPosted: Wed Oct 11, 2006 10:06 pm    Post subject: Re: C vers C++ Reply with quote

Quote:
En fait, la question que je me pose est de savoir s il est possible de
mixer du C et C++ ? Par exemple, est il possible d utiliser l appel par
reference a la sauce C++ depuis du C ? Et plein d autres questions ...

Oui et non.
Strictement parlant, C et C++ sont deux langages différents.
Un code C se compile avec un compilateur C, un code C++ se
compile avec un compilateur C++, et il existe en C++ le 'extern "C"',
qui permet d'appeler depuis du C du code C++ et inversement.

En pratique, 99% du code C raisonnable écrit compile aussi
bien en C++ et donne le même résultat. Mais si tu tombes sur
le 1%, tu as du mal.
De nombreux programmeurs C font aussi compiler leur code
C par le compilo C *et* par le compilo C++ parce qu'ils le
considèrent comme plus tatillon, pour détecter le plus de code
suspect. Mais le code exécutable est généré par le compilo C.
Ma référence sur le sujet, c'est le 'Harbison & Steele', qui
est un bouquin de C qui liste en fin de chaque chapitre
les parties de C qui ne sont pas du C++.

Je vais chercher ce bouquin, y a t il une page web qui liste toutes les
differences, voire meme un "guide" du passage C vers C++ ?

Quote:
Est ce que je dois renomer tout les fichiers en .cpp ?

Ca forcera ton compilo (VC ?) à considérer le code C comme
du code C++.

J utilise ICC et GCC sous linux.
Est ce que tout faire compiler par un compilo C++ et virer le 1%
d'ivraie, serait un bon point de depart ?

Antoine.
Back to top
Marc Boyer
Guest





PostPosted: Fri Oct 13, 2006 6:11 am    Post subject: Re: C vers C++ Reply with quote

Le 11-10-2006, boolegue (AT) gmail (DOT) com <boolegue (AT) gmail (DOT) com> a écrit :
Quote:
En pratique, 99% du code C raisonnable écrit compile aussi
bien en C++ et donne le même résultat. Mais si tu tombes sur
le 1%, tu as du mal.
De nombreux programmeurs C font aussi compiler leur code
C par le compilo C *et* par le compilo C++ parce qu'ils le
considèrent comme plus tatillon, pour détecter le plus de code
suspect. Mais le code exécutable est généré par le compilo C.
Ma référence sur le sujet, c'est le 'Harbison & Steele', qui
est un bouquin de C qui liste en fin de chaque chapitre
les parties de C qui ne sont pas du C++.

Je vais chercher ce bouquin, y a t il une page web qui liste toutes les
differences, voire meme un "guide" du passage C vers C++ ?

Je n'en connais pas. Vu la popularite du sujet, je pense
qu'il doit y en avoir pleins. Mais combien de bonnes ?

Quote:
Est ce que je dois renomer tout les fichiers en .cpp ?

Ca forcera ton compilo (VC ?) à considérer le code C comme
du code C++.

J utilise ICC et GCC sous linux.
Est ce que tout faire compiler par un compilo C++ et virer le 1%
d'ivraie, serait un bon point de depart ?

Je ne sais pas.
Deja, le 1% d'ivraie est difficile a cerner: il existe du code
accepte par un compilo C et C++ mais qui ne donnera pas le
meme resultat...
Essaye toujours.

Marc Boyer
--
Si tu peux supporter d'entendre tes paroles
Travesties par des gueux pour exciter des sots
IF -- Rudyard Kipling (Trad. Paul Éluard)
Back to top
David F.
Guest





PostPosted: Fri Oct 13, 2006 9:11 am    Post subject: Re: C vers C++ Reply with quote

Marc Boyer a écrit :

Quote:
Je n'en connais pas. Vu la popularite du sujet, je pense
qu'il doit y en avoir pleins. Mais combien de bonnes ?

Peut être celle ci est intéressante :

http://david.tribble.com/text/cdiffs.htm
Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.