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 

rendre un prog compilable sur plusieurs compilateurs
Goto page 1, 2  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
3dsman
Guest





PostPosted: Sun Feb 13, 2005 10:04 pm    Post subject: rendre un prog compilable sur plusieurs compilateurs Reply with quote



salut!

je suis entrain d'ecrire un soft en c++ avec VC++6 et je voudrais
savoir comment faire pour qu'il soit compilable sur d'autres compilos (
quand j'essaye de de le compiler avec dev c++ ca me met plein d'erreurs
de compilation).

en gros la question c'est y a il des truc a connaitre pour ne pas avoir
ce genre de prob?

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Back to top
nico
Guest





PostPosted: Sun Feb 13, 2005 10:11 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote



3dsman wrote:
Quote:
salut!

je suis entrain d'ecrire un soft en c++ avec VC++6 et je voudrais
savoir comment faire pour qu'il soit compilable sur d'autres compilos
( quand j'essaye de de le compiler avec dev c++ ca me met plein
d'erreurs de compilation).

en gros la question c'est y a il des truc a connaitre pour ne pas
avoir ce genre de prob?


Il suffit de respecter la norme :)

Il faut faire attention à VC++ qui est moins "sèvère" que d'autres compilos
(notamment gcc).

--
nico



Back to top
Fabien LE LEZ
Guest





PostPosted: Sun Feb 13, 2005 10:20 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote



On Sun, 13 Feb 2005 23:04:07 +0100, 3dsman <3dsman (AT) free (DOT) fr>:

Quote:
en gros la question c'est y a il des truc a connaitre

Oui : le C++. Assure-toi d'avoir un bon bouquin de C++ (i.e. qui ne
soit pas un bouquin consacré à VC++).


--
;-)

Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Mon Feb 14, 2005 7:45 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

nico wrote:
Quote:
3dsman wrote:

je suis entrain d'ecrire un soft en c++ avec VC++6 et je
voudrais savoir comment faire pour qu'il soit compilable sur
d'autres compilos (quand j'essaye de de le compiler avec dev
c++ ca me met plein d'erreurs de compilation).

en gros la question c'est y a il des truc a connaitre pour
ne pas avoir ce genre de prob?

Il suffit de respecter la norme Smile

Si c'était seulement le cas. Si on respecte rigueureusement la
norme, sans prendre d'autres précautions, ça ne se compile ni
sous VC++ ni sous g++. En fait, la seule façon d'atteindre une
dégrée de portabilité, c'est d'avoir beaucoup de compilateurs
sous la main, et l'essayer.

Quote:
Il faut faire attention à VC++ qui est moins "sèvère" que
d'autres compilos (notamment gcc).

Et dans les deux cas, le langage qu'il comprend change avec
chaque version. Du code écrit pour g++ 2.95 ne marche pas avec
g++ 3.4, par exemple, et j'ai endendu dire que c'était pareil
entre VC++ 6.0 et 7.1.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
3dsman
Guest





PostPosted: Mon Feb 14, 2005 8:31 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

ben par exemple j'ai essayer de compiler mon soft sur un vieux kdevelop
ca marchait et sur la nouvelle version: messages d'erreurs . Et la je
pige plus!

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com

Back to top
Ivan Vecerina
Guest





PostPosted: Mon Feb 14, 2005 10:21 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

"3dsman" <3dsman (AT) free (DOT) fr> wrote

Quote:
ben par exemple j'ai essayer de compiler mon soft sur un vieux kdevelop ca
marchait et sur la nouvelle version: messages d'erreurs . Et la je pige
plus!
D'une version à l'autre, des bugs peuvent être corrigées (voire

introduites) dans tout compilateur.
En l'occurence, il est probable que le programme utilisait une
fonctionalité boguée ou non-standard de l'ancienne version.
Le mieux serait sans doute de poster un extrait de code, et d'inclure
les premier messages d'erreur.

En pratique, je pense qu'il faut chercher avant tout à écrire du
code conforme au standard. Puis faire les adaptations nécessaires
pour fonctionner avec les compilos que l'on utilise.
Reste aussi que l'on peut choisir d'être plus ou moins aggressif
dans l'utilisation des fonctionnalités avancées du C++ (p.ex.
spécialisation de templates).

Les projets qui ont un grand souci de portabilité (p.ex. Mozilla)
tendent à être très conservateurs quant aux fonctionnalités
utilisées. En voici un exemple:
http://www.mozilla.org/hacking/portable-cpp.html
Clairement, certaines des contraintes imposée ci-dessus sont
handicapantes et inutile si l'on a pour cible de compilos
relativement récents tels que GCC 3.x et MSVC 7.x .


Ivan
--
http://ivan.vecerina.com/contact/?subject=NG_POST <- email contact form
Brainbench MVP for C++ <> http://www.brainbench.com



Back to top
Olivier Azeau
Guest





PostPosted: Mon Feb 14, 2005 3:33 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Ivan Vecerina wrote:
Quote:
Les projets qui ont un grand souci de portabilité (p.ex. Mozilla)
tendent à être très conservateurs quant aux fonctionnalités
utilisées. En voici un exemple:
http://www.mozilla.org/hacking/portable-cpp.html
Clairement, certaines des contraintes imposée ci-dessus sont
handicapantes et inutile si l'on a pour cible de compilos
relativement récents tels que GCC 3.x et MSVC 7.x .

"Handicapantes", je trouve le terme un peu faible quand je lis cela !

Don't use exceptions.
Don't use Run-time Type Information.
Don't use C++ standard library features, including iostream
Don't use namespace facility.
....


Back to top
Ivan Vecerina
Guest





PostPosted: Mon Feb 14, 2005 7:00 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Quote:
"Olivier Azeau" <ransom (AT) xasamail (DOT) com> wrote in message
news:1108395215.059593.254310 (AT) l41g2000cwc (DOT) googlegroups.com...
Ivan Vecerina wrote:
Les projets qui ont un grand souci de portabilité (p.ex. Mozilla)
tendent à être très conservateurs quant aux fonctionnalités
utilisées. En voici un exemple:
http://www.mozilla.org/hacking/portable-cpp.html
Clairement, certaines des contraintes imposée ci-dessus sont
handicapantes et inutile si l'on a pour cible de compilos
relativement récents tels que GCC 3.x et MSVC 7.x .

"Handicapantes", je trouve le terme un peu faible quand je lis cela !

Don't use exceptions.
Don't use Run-time Type Information.
Don't use C++ standard library features, including iostream
Don't use namespace facility.
...

Je suis bien d'accord que c'est un euphémisme.
J'aurais peut-être dû dire "castratrices".

Et j'espère que qqn là-bas va penser à mettre à jour cette guideline
à mesure que les compilos sur les plate-formes cibles évoluent.

J'imagine que cette liste rebuttera plus d'un développeur.
Mais en comparaison avec le kernel Linux, qui reste en C,
et vu la popularité du projet, ils ne doivent pas trop en souffrir.


--
http://ivan.vecerina.com/contact/?subject=NG_POST <- e-mail contact form



Back to top
nico
Guest





PostPosted: Mon Feb 14, 2005 7:55 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Quote:
Don't use exceptions.
Don't use Run-time Type Information.
Don't use C++ standard library features, including iostream
Don't use namespace facility.
Don't use C++




Back to top
3dsman
Guest





PostPosted: Mon Feb 14, 2005 11:14 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Quote:
Don't use C++ standard library features, including iostream
Don't use namespace facility.

heu pourquoi ces deux la? c quoi la justification? y en a une au
moin???

--
Ceci est une signature automatique de MesNews.
Site : http://mesnews.no-ip.com


Back to top
Olivier Azeau
Guest





PostPosted: Tue Feb 15, 2005 5:17 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

nico wrote:
Quote:
Don't use exceptions.
Don't use Run-time Type Information.
Don't use C++ standard library features, including iostream
Don't use namespace facility.

Don't use C++

Tout dépend de ce que l'on entend par C++.
Le temps n'est pas loin où la majorité des applis en C++ respectaient
toutes ces règles. :-)

Ce qui me fait le plus bizarre c'est qu'ils utilisent quand même des
templates...

Back to top
nico
Guest





PostPosted: Tue Feb 15, 2005 9:26 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Olivier Azeau wrote:
Quote:
nico wrote:
Don't use exceptions.
Don't use Run-time Type Information.
Don't use C++ standard library features, including iostream
Don't use namespace facility.

Don't use C++

Tout dépend de ce que l'on entend par C++.
Le temps n'est pas loin où la majorité des applis en C++ respectaient
toutes ces règles. :-)

Ce qui me fait le plus bizarre c'est qu'ils utilisent quand même des
templates...

Ouais enfin je trouve ca un peu restrictif, moi je m'arrange pour que ca
compile sous VC7 et 1 ou 2 version de GCC et c'est bon...

Et même qand je fournis les sources je donne la possibilité d'avoir un
package avec les binarires comme ca l'utilisateur n'a pas a recompiler et
donc pas de prob.



Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Feb 15, 2005 11:06 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

Ivan Vecerina wrote:
Quote:
En pratique, je pense qu'il faut chercher avant tout à écrire du
code conforme au standard.

Y compris export ? En fait, le standard est surtout utile
aujourd'hui comme indication sur la direction future que
prendraient des compilateurs. (Enfin, je l'espère au moins.) En
fait, il faut prendre la norme moins certaines parties, avec en
plus des manipulations particulières pour s'adresser aux
compilateurs pré-normes.

Mais ce n'est pas dit qu'il faut une portabilité absolue à tous
les compilateurs possibles non plus. En fait...

Quote:
Puis faire les adaptations nécessaires pour fonctionner avec
les compilos que l'on utilise.

C'est surtout ça -- s'adresser aux problèmes connus, et qu'on
peut tester. Par rapport à la norme, il y a une ou deux choses
qu'on sait peu implémenter : export et les paramètres de
template pour les templates, par exemple. AMHA, au moins de
savoir bien d'avance que tous les compilateurs ciblés les
supportent, je les éviterais. Norme ou non. Ensuite, il y a
quelque problèmes où on sait que les compilateurs varient : la
recherche des noms dans un template ou la portée d'une variable
définie dans une boucle for. Au moins dans le deuxième cas, et
en grande partie dans le premier aussi, il existe des écritures
« portables », des façons d'écrire le code pour qu'il marche
avec les deux. On privilègerait ces formes autant que possible,
et évidemment, dans la mésure qu'on est au courant du problème.

Quote:
Reste aussi que l'on peut choisir d'être plus ou moins
aggressif dans l'utilisation des fonctionnalités avancées du
C++ (p.ex. spécialisation de templates).

Tout à fait. Tout dépend des exigeances de portabilité.

Quote:
Les projets qui ont un grand souci de portabilité (p.ex.
Mozilla) tendent à être très conservateurs quant aux
fonctionnalités utilisées. En voici un exemple:
http://www.mozilla.org/hacking/portable-cpp.html
Clairement, certaines des contraintes imposée ci-dessus sont
handicapantes et inutile si l'on a pour cible de compilos
relativement récents tels que GCC 3.x et MSVC 7.x .

Voire même VC++ 6.0Smile. Les contraints y sont draconiens. Mais
je crois en partie, ce n'est pas seulement les compilateurs,
mais le modèle de développement qui l'impose. Il est donc
possible aujourd'hui d'écrire des templates de façon portable.
Si on connaît un peu des problèmes qu'on risque d'avoir avec des
compilateurs plus anciens, et comment les éviter. Si j'ai un
groupe d'employés plus ou moins fermé, je peux m'assurer qu'ils
sont tous au courant ; du coup, pas de problème avec les
templates. Si je ne sais pas qui va écrire quoi, il vaut mieux
prendre les précautions. On peut écrire des templates de façon
portable, mais il faut savoir ce qu'on fait, et ce n'est pas
parce que le code se compile avec un ou deux compilateurs que
c'est portable.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Tue Feb 15, 2005 11:14 am    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

3dsman wrote:
Quote:
Don't use C++ standard library features, including iostream
Don't use namespace facility.

heu pourquoi ces deux la? c quoi la justification? y en a une
au moin???

Pour les iostream, il en existe deux variantes assez répandues,
et incompatibles. C'est possible à écrire du code qui marche
avec les deux -- je le fais de temps en temps, mais il faut bien
être au courant du problème. Quand tu as un modèle de
développement aussi ouvert que le leur, il vaut mieux être
extrèmement prévoyant. Ça ne veut pas dire que la même règle
doit valoir dans une boîte où le développement est plus fermé.
(En passant, je crois aussi qu'ils ciblent certaines plateformes
où le compilateur C++ est vraiment ancien, du genre Palm. Je
crois que si tu ne cibles que des machines « classiques », et
que tu n'as pas du code existant qui impose un compilateur plus
ancien, tu peux ne prendre en considération que des iostream
standard. Donc, pas de problèmes de portabilité de ce côté-là.)

Pour les namespace, je sais que j'ai essayé à les introduire
dans ma bibliothèque, et que ça posait des problèmes avec VC++
6.0. J'imagine qu'une utilisation plus simple aurait peut-être
marché ; je n'ai pas d'accès régulier au compilateur pour
essayer. Mais encore, le modèle ouvert de développement dit de
ne pas prendre des risques, surtout que dans le cas des
namespace, la nouveauté n'apporte pas beaucoup.

--
James Kanze GABI Software
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Back to top
Fabien LE LEZ
Guest





PostPosted: Tue Feb 15, 2005 7:04 pm    Post subject: Re: rendre un prog compilable sur plusieurs compilateurs Reply with quote

On 15 Feb 2005 03:06:14 -0800, [email]kanze (AT) gabi-soft (DOT) fr[/email]:

Quote:
Mais ce n'est pas dit qu'il faut une portabilité absolue à tous
les compilateurs possibles non plus.

La question stupide du jour : ne serait-il pas possible de développer
en C++ "moderne" sur une machine Windows ou Linux, puis d'utiliser un
"pseudo-compilateur" pour le transformer en code C, qui serait
compilable partout ?


--
;-)

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
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.