9

我在 Eclipse 3.4.1 (CDT 5.0.1) 中编写了这个小小的 C++ 示例:

#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 一起正常工作吗?

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

您可能想尝试astyle eclipse 插件。它似乎比 C++ 缩进的默认 Eclipse 风格要好得多。

于 2009-02-04T22:02:13.903 回答
2

它在当前的开普勒 CDT 中仍然存在问题。但是 Eclipse 的 Bugzilla 中有一个错误(在此处查看其状态)。它最终会被修复:-)

于 2014-04-05T12:58:45.900 回答
1

奇怪,这曾经与 CDT 4 一起使用。所以如果你真的需要这个,我建议你降级你的 CDT :-/

于 2009-01-30T15:37:10.300 回答
0

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

于 2009-01-26T21:36:39.410 回答