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

发布于 2024-07-10 11:42:42 字数 861 浏览 10 评论 0原文

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

I write this tiny C++ example in 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;
}

Then I hit Shift+Ctrl+F to format my code, and it becomes:

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

This is with the BSD/Allman Code Style. Other styles obviously vary the look of the formatted code, but none give correct indentation.

When I use the format feature on a larger piece of code, subsequent functions or methods are also affected by too little indentation, making the formatting help pretty unhelpful.

Is there something I can do to make the indentation work properly with BOOST_FOREACH?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

甜心 2024-07-17 11:42:43

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

You might want to try the astyle eclipse plugin. It seems to be much nicer than the default eclipse style of C++ indentation.

乜一 2024-07-17 11:42:43

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

It is still broken in the current CDT for Kepler. But there is a bug in Eclipse's Bugzilla (check its status here). It will eventually be fixed :-)

隱形的亼 2024-07-17 11:42:43

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

Strange, this used to work with CDT 4. So if you really really need this I suggest you downgrade your CDT :-/

是你 2024-07-17 11:42:43

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

Euh... you can't ? Try next version of CDT... :_(

浅沫记忆 2024-07-17 11:42:42

将其添加到您的代码使用的某些标头中:

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

Add this to some header used by your code:

#ifdef __CDT_PARSER__
    #undef BOOST_FOREACH
    #define BOOST_FOREACH(a, b) for(a; ; )
#endif
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文