11
votes

Modification des commentaires du style C ++ sur style C

J'ai un fichier source C ayant des commentaires dans // (C ++) style. Je veux changer tous les commentaires à l'ancien / * * * /


8 Réponses :


14
votes

une substitution avec votre éditeur préféré et une expression régulière comme s # // (. *) # / * \ 1 * / # devrait le faire ...


5 commentaires

Faites juste attention à x = 0; // / * était x = 1; * / BUCHE OFF-ONE corrigé


Ne fonctionne pas pour moi dans VI (lancers non trouvé: //(.*)< / code>) Qu'est-ce que hachait?


@N 1.1: Le hachage est juste un espace réservé, cela peut être n'importe quel caractère. Il s'agit généralement d'une barre oblique, mais lorsque vous avez des barres obliques dans votre motif, il est plus facile d'utiliser un délimiteur différent de celui-ci pour échapper à toutes vos barres obliques. S / FOO / BAR / est équivalent à S # FOO # barre # , SXFOOXBARX et s, foo, bar, < / code> etc.


@N 1.1: Dans VI, je pense que vous devez échapper à la parenthèse pour les faire capturer (sans échéance qu'ils correspondent au texte) : s # // \\ (. * \ 1 * / # . Le '#' servir à délimiter la recherche et la substitution (généralement faite avec '/', mais en utilisant '#' permet de remplacer '/' s sans s'échapper)


@N 1.1: Le séporateur par défaut de recherche et de remplacement dans VI est '/' mais vous pouvez réellement utiliser n'importe quel caractère. WHCIH est utile lorsque la chaîne de recherche contient le caractère '/' (sinon, vous devez échapper à son utilisation). Avec VI, vous devez échapper à '(' ('et') 'pour que vous vous retrouviez avec :% s # // \\ (. * \\) $ # / * \ 1 * / #




5
votes

Si vous recherchez quelque chose d'un peu plus générique, vous pouvez également utiliser un outil de formatage de code source pour cela. Pour C, j'ai utilisé Incustify avant et cela a fonctionné raisonnablement bien. Il peut y avoir d'autres aussi, mais je pense que les détruisements peuvent changer de style C ++ commentaires dans des commentaires de style C avec le paramètre cmt_cpp_to_c .

La configuration peut être un peu décourageante, mais si vous utilisez simplement le fichier d'exemple de configuration et modifier uniquement les éléments qui vous intéressent, cela pourrait faire ce que vous voulez.


0 commentaires

1
votes

Vous pouvez le faire avec le plug-in VIM NerdCommENTment .

Cela facilite la découverte du texte, puis ajoutez un commentaire multiligne comme vous le souhaitez.


0 commentaires

1
votes

Eh bien, 1, $ s # // \ \ (. * \ \) # / * \ 1 * / # ne fonctionnera que si vous n'avez pas d'instances de commentaires de style C ++ (généralement multi -Line) Commentaires de style C, puisque la substitution mettra prématurément le commentaire de style C, laissant la partie restante du commentaire de style C sans un / * . .

Tout commentaire de style C ++ régulier qui a * / dans ce poste entraînera des problèmes. Cela se produit dans le code dans lequel un mauvais programmeur a modifié un commentaire de style C sur un commentaire de style C ++ sans retirer l'extrémité * / .


0 commentaires

1
votes

C'est un problème simple à la surface, mais un problème très difficile de gérer tous les cas de bord. La solution simple est facilement implémentée dans SED:

egrep '//.*/[*]|".*//' oldfile


0 commentaires

0
votes

Pour tous les codeurs là-bas! La solution ci-dessous fonctionne avec Eclipse, sublime et autres éditeurs qui soutiennent des expressions régulières.

  1. Arrêtez et remplacez-le dans Sublime
  2. Assurez-vous que l'option d'expression régulière est activée (Alt + R)
  3. Entrez dans la recherche: // (. *)
  4. Entrez dans Remplacer / * \ 1 * /

    voilà!


0 commentaires

1
votes

VIM NERDCommENTateur Alternate Delims Carte

Si vous le faites: ca Certains types de fichiers ont des styles de commentaire alternatifs, et en particulier pour C / C ++, il permet de passer entre // et et et et / * , testé en 2.5.2.

Vous pouvez également être intéressé par le "Mode Sexy Commentaires" utilisé avec CS QUI NOW C MULLINE COMMENTOS COMMENTÉS AUX: NERD Commentateur: Comment commenter une gamme


0 commentaires