2008-12-14 27 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)。它最終將被修復:-)

相關問題