OVH Cloud OVH Cloud

rendre un prog compilable sur plusieurs compilateurs

20 réponses
Avatar
3dsman
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

10 réponses

1 2
Avatar
nico
3dsman wrote:
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

Avatar
Fabien LE LEZ
On Sun, 13 Feb 2005 23:04:07 +0100, 3dsman :

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++).


--
;-)

Avatar
kanze
nico wrote:
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.

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


Avatar
3dsman
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
Avatar
Ivan Vecerina
"3dsman" wrote in message
news:
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

Avatar
Olivier Azeau
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.
...

Avatar
Ivan Vecerina
"Olivier Azeau" wrote in message
news:
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


Avatar
nico
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++


Avatar
3dsman
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


Avatar
Olivier Azeau
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...


1 2