• # Whaou

    Posté par  . Évalué à 1.

    C'est expéditif... ainsi sera ma réponse :
    xarg, grep, et sed
    pour le reste, ils suffit de broder... ( tu peux remplacer grep par ls ou find si le coeur t'en dis )

    ps: sans connaitre ton projet, j'aurai du mal à être plus précis.

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: Whaou

      Posté par  . Évalué à 1.

      rm, ça va encore plus vite.
    • [^] # Re: Whaou

      Posté par  . Évalué à 1.

      désolé! je ne pensais pas être impoli...

      J'explique un peu. C'est un gros projet. Le temps de compilation est devenu vraiment trop long. L'heure est à chercher au grapillement de minutes.. (1h de compil aujourd'hui)

      j'avais pensé utilisé grep et sed mais parfois on définit deux namespace sur un seul fichier. donc galere pour découvrir l'accolade fermante.

      En fait les problèmes se posent sur l'accolade fermante.
      (Toute idée est la bienvenue!)

      Un autre souci est que plusieurs branches vont être mises ensembles mais à des intervalles différents et différents travaux ont été réalisés sur chacune des branches ainsi il faudrait un script sûr à 100% qui retire les namespaces (et les sous-namespace aussi) sur chacunes des différentes branches.

      et malheuresement pour moi je connais mes compétences de scripting donc c'est pourquoi le mail ici!

      voilà!!

      Merci d'avance!

      ps : Les using namespace sont interdits sur les gros projets (cf remarque plus bas) car la compilation prend déjà 1h et je n'ose pas imaginer quelle serait sa durée si on utilisait des using...

      • [^] # Re: Whaou

        Posté par  . Évalué à 1.

        remarque sur le ps:
        j'entends using namespace...
        bien entendu on utilise des using bidule::machin; :)
      • [^] # et make ?

        Posté par  . Évalué à 1.

        peut-être que je m'avance un peu trop mais une compil qui dure une heure c'est un peu louche: quid de l'optimisation de la compilation via Makefile.
        Et sinon après il y a toujours la solution du distcc.
        Doit bien y avoir une dizaine de machines ayant une charge moyenne de 2% en continue là où tu codes ?

        ps: parce que vouloir virer les namespace comme ça c'est aller tout droit dans un mur, dans un couloir...
        • [^] # Re: et make ?

          Posté par  . Évalué à 1.

          oki bon je vais regarder pour une autre solution...

          mais pour la gestion de la compil on a déjà regardé pour l'accélerer selon les ordres de compil.. on a gagné mais pas suffisament...

          Merci pour l'aide!
      • [^] # Re: Whaou

        Posté par  (site web personnel) . Évalué à 2.

        C'est n'importe quoi! Je suis sérieux.
        C'est pas un espace de noms qui va ralentir tes compilations.

        Un conseil reprends plutôt tes dépendances. Utilises des déclarations en avant quand tu le peux (typiquement pour les données manipulées par référence ou pointeur, et non par valeur), et autres techniques de compilation-firewall (qui amélioreront aussi les recompilations). Des infos dans Exceptional C++ et donc sur GOTW si vous ne voulez pas investir dans cet incontournable bouquin (je ne peux que conseiller les autres livres de la gamme C++ Advanced chez Addisson Wesley).

        Des fichiers d'en-tête précompilés sont aussi une bonne façon d'accélérer les compilations. Typiquement, pour chaque module tu auras un fichier d'en-tête précompilés incluant les fichiers utilisés partout dans chacun de tes modules (typiquement, <string>, <vector> et autres fichiers qui vous sont propres).
      • [^] # Re: Whaou

        Posté par  (site web personnel) . Évalué à 1.

        une fois, j'avais a découvrir les accolades fermantes correspondantes ... dans le traitement de header C.
        Tu peux utiliser 'indent' et ensuite déduire le niveau de l'accolade par le niveau de l'indentation.
  • # grep ?

    Posté par  . Évalué à 1.

    Non, désolé, il manque encore juste quelques précisions.

    Tu veux faire quoi ? Ramener toutes les définitions de classes au niveau initial ?

    Déjà, si c'est parce que ça t'embête d'avoir à préfixer chaque nom de classe ou de fonction par "LeNomDuNameSpace::", tu utilises "using namespace LeNomDuNameSpace;" au début de ton code.


    Sinon, le plus simple est de faire un "grep -R namespace" pour les retrouver parmi les différents fichiers. Cela te donnera les déclarations du style "namespace nom { bla bla bla }" et les déclarations dans le programme comme "using namespace nom;".

    Arpès, il faut boucler sur chacun d'eux et ajouter le suffixe "::" avant de faire une recherche et éventuellement une substitution automatique, mais avec beaucoup de prudence car il se peut qu'il y ait des homonymes, les espaces de nommage servant précisément à gérer efficacement ce problème.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.