9

この小さな C++ の例を Eclipse 3.4.1 (CDT 5.0.1) で書きます。

#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 Code Style を使用しています。他のスタイルは、フォーマットされたコードの外観を明らかに変えますが、正しいインデントを与えるものはありません。

より大きなコードでフォーマット機能を使用すると、インデントが少なすぎると後続の関数やメソッドも影響を受け、フォーマットの助けがかなり役に立たなくなります。

BOOST_FOREACH でインデントを適切に機能させるためにできることはありますか?

4

5 に答える 5

3

これをコードで使用されるヘッダーに追加します。

#ifdef __CDT_PARSER__
    #undef BOOST_FOREACH
    #define BOOST_FOREACH(a, b) for(a; ; )
#endif
于 2012-02-03T20:43:57.687 に答える
2

現在の Kepler の CDT ではまだ壊れています。しかし、Eclipse の Bugzilla にはバグがあります (ここでステータスを確認してください)。最終的には修正されます:-)

于 2014-04-05T12:58:45.900 に答える
2

astyle eclipse pluginを試してみてください。C++ インデントのデフォルトの eclipse スタイルよりもはるかに優れているようです。

于 2009-02-04T22:02:13.903 に答える
1

奇妙なことに、これはCDT 4で機能していました。したがって、本当にこれが必要な場合は、CDTをダウングレードすることをお勧めします:-/

于 2009-01-30T15:37:10.300 に答える
0

ええと...できませんか?次のバージョンの CDT を試してください... :_(

于 2009-01-26T21:36:39.410 に答える