Как правильно настроить авто-отступ Eclipse CDT при использовании BOOST_FOREACH? - PullRequest
9 голосов
/ 14 декабря 2008

Я пишу этот крошечный пример 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. Очевидно, что другие стили меняют внешний вид отформатированного кода, но ни один из них не дает правильного отступа.

Когда я использую функцию форматирования в большем фрагменте кода, последующие функции или методы также страдают от слишком малого отступа, что делает форматирование очень бесполезным.

Есть ли что-то, что я могу сделать, чтобы отступ работал правильно с BOOST_FOREACH?

Ответы [ 5 ]

3 голосов
/ 04 февраля 2012

Добавьте это к заголовку, используемому вашим кодом:

#ifdef __CDT_PARSER__
    #undef BOOST_FOREACH
    #define BOOST_FOREACH(a, b) for(a; ; )
#endif
2 голосов
/ 05 апреля 2014

Он все еще не работает в текущем CDT для Кеплера. Но в Eclipse Bugzilla есть ошибка (проверьте ее статус здесь ). Со временем это будет исправлено: -)

2 голосов
/ 05 февраля 2009

Возможно, вы захотите попробовать astyle eclipse плагин . Кажется, это намного лучше, чем стиль затмения по умолчанию в C ++.

1 голос
/ 30 января 2009

Странно, это раньше работало с CDT 4. Так что, если вам действительно это нужно, я предлагаю вам понизить ваш CDT: - /

0 голосов
/ 27 января 2009

Э-э ... ты не можешь? Попробуйте следующую версию CDT ...: _ (

...