 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
3dsman Guest
|
Posted: Sun Feb 13, 2005 10:04 pm Post subject: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Sun Feb 13, 2005 10:11 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Sun Feb 13, 2005 10:20 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Mon Feb 14, 2005 7:45 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
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
|
Posted: Mon Feb 14, 2005 8:31 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Mon Feb 14, 2005 10:21 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
"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
|
Posted: Mon Feb 14, 2005 3:33 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Mon Feb 14, 2005 7:00 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
| 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
|
Posted: Mon Feb 14, 2005 7:55 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
| 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
|
Posted: Mon Feb 14, 2005 11:14 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
| 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
|
Posted: Tue Feb 15, 2005 5:17 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Tue Feb 15, 2005 9:26 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Tue Feb 15, 2005 11:06 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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.0 . 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
|
Posted: Tue Feb 15, 2005 11:14 am Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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
|
Posted: Tue Feb 15, 2005 7:04 pm Post subject: Re: rendre un prog compilable sur plusieurs compilateurs |
|
|
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 |
|
 |
|
|
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
|
|