2008-12-14 6 views
9

je vous écris ce petit exemple C++ dans Eclipse 3.4.1 (CDT 5.0.1):Comment rendre le retrait automatique d'Eclipse CDT correct lors de l'utilisation de BOOST_FOREACH?

#include <iostream> 
#include <vector> 
#include <boost/foreach.hpp> 

int foo() 
{ 
    std::vector<int> numbers; 
    BOOST_FOREACH(int n, numbers) 
    { 
    std::cout << n << std::endl; 
    } 
    std::cout << numbers.size << std::endl; 
} 

Puis je frappe Maj + Ctrl + F pour formater mon code, et il devient:

#include <iostream> 
#include <vector> 
#include <boost/foreach.hpp> 

int foo() 
{ 
    std::vector<int> numbers; 
    BOOST_FOREACH(int n, numbers) 
{ std::cout << n << std::endl; 
} 
std::cout << numbers.size << std::endl; 
} 

Ceci est avec le style de code BSD/Allman. D'autres styles varient évidemment l'apparence du code formaté, mais aucun ne donne une indentation correcte. Lorsque j'utilise la fonction de formatage sur un plus gros morceau de code, les fonctions ou méthodes suivantes sont également affectées par une indentation insuffisante, ce qui rend l'aide à la mise en forme peu utile.

Y a-t-il quelque chose que je puisse faire pour que l'indentation fonctionne correctement avec BOOST_FOREACH?

+0

Avez-vous déjà résolu ce problème? Le plugin Astyle est un IMO inférieur car il aligne les arguments de fonction bien trop loin vers la droite. – Dave

+1

Je n'ai jamais résolu cela. Notez que je n'ai pas travaillé sur ce projet dans les versions plus récentes d'Eclipse non plus. –

+1

est-il possible de dire à eclipse que 'BOOST_FOREACH' devrait être formaté comme une instruction' while'? – Jayen

Répondre

0

Euh ... vous ne pouvez pas? Essayez la prochaine version de CDT ...: _ (

+0

Je suis d'accord, le commentaire a été supprimé. Aurait dû lire plus loin, les excuses. – Emile

1

étrange, cette habitude de travailler avec CDT 4. Donc, si vous avez vraiment vraiment besoin de ce que je vous suggère de déclasser votre CDT: -/

+0

Peut-être que le formateur est devenu trop intelligent? –

2

Vous pourriez vouloir essayer . l'astyle eclipse plugin Il semble être beaucoup plus agréable que l'éclipse style par défaut de retrait de C

3

Ajouter ce à certains en-tête utilisé par votre code.

#ifdef __CDT_PARSER__ 
    #undef BOOST_FOREACH 
    #define BOOST_FOREACH(a, b) for(a; ;) 
#endif 
+1

En fonction de la configuration de votre projet (si les paramètres Eclipse ne sont pas transmis à votre compilateur), vous pouvez également définir ceci dans "C/C++ Général-> Chemins et symboles-> Symboles" dans le projet Propriétés. Définissez un symbole C++, "BOOST_FOREACH (a, b)" à "for (a;;)", et autorisez-le à ré-indexer. –

+0

Avec le dernier CDT (20120920-0800) aucun de ces travaux. – Catskul

2

Il est encore cassé dans la CDT actuelle de Kepler. Mais il y a un bug dans Bugzilla d'Eclipse (vérifiez son statut here). Il sera éventuellement corrigé :-)

Questions connexes