使用BOOST_FOREACH时如何正确地使Eclipse CDT自动缩进?

时间:2008-12-14 10:38:08

标签: c++ eclipse boost formatting indentation

我在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使缩进正常工作吗?

5 个答案:

答案 0 :(得分:3)

将此添加到您的代码使用的某个标头中:

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

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

嗯......你不能吗?尝试下一版CDT ......:_(