Bien le bonjour,
Je cherche un logiciel/outils/lib/bidule qui permettrait de mettre tout seul à niveau un lot de programmes cpp/hpp, de manière simple et efficace. Dans l'idéal, il faudrait qu'il puisse faire depuis c03 à c20 ou plus, le tout sans intervention humaine trop importante.
Ça servirait à pouvoir (enfin) recompiler toutes les vielles versions de la Bataille pour Wesnoth, un projet dont je parle ici.
Une rapide recherche sur l'inter-pas-très-net m'a appris que clang-tidy aurait une fonctionnalité pouvant me convenir, mais la doc est assez pauvre et il s'est cassé les dents au premier test.
Je ne m'y connais pas trop en c++, mais j'arrive à saisir les concepts généraux.
Merci de votre coopération.
# Pourquoi ?
Posté par Anthony Jaguenaud . Évalué à 2.
Salut,
Pour te répondre, je ne sais pas.
Faire ce travail est long et fastidieux. Alors, pourquoi le faire ?
Je vois des raisons objectives, les compilateurs abandonnent le support de C++03 et donc il faut changer tout ce qui a été abandonné. Mais sinon, c’est quoi l’intérêt ?
Pourquoi toi veux-tu faire ce travail ? Le plaisir de découvrir le c++ ? Le plaisir de découvrir clang-tidy ? Autre chose ?
[^] # Re: Pourquoi ?
Posté par Anthony Jaguenaud . Évalué à 6.
Je me réponds après avoir suivi ton lien... (je sortirai à la fin).
Je pense que le problème ne vient pas des versions de norme c++... mais plus probablement de la taille des pointeurs... en 32bits, beaucoup de gens convertissaient les pointeurs en
uint. Mais en 64 bits (version amd64) les pointeurs font 64 bits, mais les entiers sont restés à 32 bits. Àmha, tu as plus des problèmes de ce genre.J’ai souvenir que sur
gentooen 64 bits, certains logiciels étaient patchés pour pouvoir compiler en 64 bits. Peut-être retrouveras-tu des patchs par là-bas.Je suis toujours intéressé sur le pourquoi ?
C’est bon, maintenant, je sors ([]--->)
# clang
Posté par freem . Évalué à 7. Dernière modification le 10 novembre 2022 à 15:20.
clang-tidy sait faire. Dans ce lien, ctrl+f sur "modernize".
A l'origine (dans les années 2010) ça s'appelait clang-modernise. L'intérêt, pour répondre au message ci-dessus, c'est de pouvoir bénéficier des nouvelles syntaxes, ce qui rend le code clairement plus lisible.
Typiquement:
Peut devenir en C++ moderne:
Pour moi, il n'y a pas photo. Et je n'ai pas cité
std::bind1stoustd::bind2nd...Quant à la doc, je ne la trouve pas vraiment pauvre, moi. Au pire on peut facilement trouver des articles sur le sujet.
Ceci étant dit, moderniser une base de code sans connaître le langage me semble assez peu pertinent quand même.
[^] # Re: clang
Posté par remico . Évalué à 3.
Le jeu daterait de 2003, le C++ a évolué depuis. Il y a une version du c++ de 1998, une de 2003 et une de 2011.
Sur la page du site gcc, il n'y a plus que les réglages -std=c++98 et -std=c++11 :
https://gcc.gnu.org/projects/cxx-status.html
Je ne sais pas si cette version -std=c++03 fonctionne avec avec un compilateur récent, je ne sais pas non plus s'il y a beaucoup de différence c++03 c++11.
Mais il est peu probable que ce soit le c++03 je miserai plutôt sur le CXXFLAGS=-std=c++98 à ajouter dans le Makefile ou aux différents Makefile ou encore à Makefile.in avant de lancer ./configure s'il existe, ou encore seulement au Makefile du dossier du fichier qui pose un soucis de compilation.
[^] # Re: clang
Posté par alberic89 🐧 . Évalué à 1.
Merci beaucoup pour cette piste.
En effet, l'ajout de CXXFLAGS=-std=c++03 au Makefile.am a résolu mon problème.
Encore merci.
L'informatique n'est pas une science exacte, on n'est jamais à l'abri d'un succès
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.