2008-12-14 21 views
9

我写这个小C++例如在Eclipse 3.4.1(CDT 5.0.1):如何在使用BOOST_FOREACH时使Eclipse CDT自动缩进?

#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; 
} 

然后我按Shift + Ctrl + F键格式化我的代码,它变成:

#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; 
} 

这是BSD/Allman代码风格。其他样式明显改变了格式化代码的外观,但没有一个给出正确的缩进。

当我在较大的一段代码上使用格式化功能时,后续的函数或方法也会受到过少缩进的影响,使得格式化帮助非常无益。

有什么我可以做的,使缩进工作正常与BOOST_FOREACH?

+0

你有没有解决这个问题? Astyle插件比IMO差,因为它将函数参数排列得太靠右。 – Dave 2010-04-15 13:06:41

+1

我从来没有解决过这个问题。请注意,我还没有在更新版本的Eclipse中使用此项目。 – 2010-05-08 08:03:20

+1

是否可以告诉eclipse'BOOST_FOREACH`应该被格式化为`while'语句? – Jayen 2011-10-25 22:45:32

回答

0

呃......你不能?尝试CDT的下一个版本?:_(

1

奇怪,这个使用CDT 4.工作所以,如果你真的真的需要这个,我建议你降级CDT: -/

3

一下添加到您的代码中使用的一些标题:

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

它仍然是打破了开普勒当前CDT。但Eclipse的Bugzilla中存在一个错误(检查其状态here)。它最终将被修复:-)

相关问题