Forum général.cherche-logiciel Mettre à niveau un programme c++

Posté par  . Licence CC By‑SA.
Étiquettes :
2
8
nov.
2022

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  . É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  . É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 gentoo en 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  . É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:

    for( std::vector<int>::const_iterator it = foo.begin(); it != foo.end(); ++it )
    {
      printf( "%d\n", *it );
    }

    Peut devenir en C++ moderne:

    for( auto i : foo )
    {
      printf( "%d\n", i );
    }

    Pour moi, il n'y a pas photo. Et je n'ai pas cité std::bind1st ou std::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  . É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  . É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.