2009-11-28 4 views
19

Я пытаюсь использовать программу «indent» для программ Centent C++. Но, похоже, это не работает нормально. Это намного больше вникает в отступ.Есть ли утилита для отступа C++-программ

Это файл класса. Можете ли вы предложить правильные варианты для этого или другую программу, которая работает?

Благодаря

+0

Возможно, вы можете привести пример того, что он делает, что вам не нравится, и, что еще важнее, как вы хотите, чтобы он себя вел. –

ответ

18

Try Artistic Style:

Художественный стиль является исходный код индентор, форматировщик и Beautifier для C, C++, C# и языков программирования Java.

+1

Это не работает. Это только для Microsoft. – tchrist

+7

Нет, это не так: «Пакет Windows содержит скомпилированный двоичный файл. Другие платформы должны будут скомпилировать исходный код. Makefiles включены для самых популярных компиляторов» –

11

в визуальной студии, CTRL +, CTRL +к, CTRL +е будет автоматически отступа весь файл, вы работаете в

5

Многие редакторы, такие как Vim и Emacs, имеют функцию, которая кодирует код в соответствии с его встроенный стандарт отступов.

В Vim вы можете ввести = с любым движением. (Как =% в любой блок-разделитель или S-V для выбора области, а затем = переформатировать). В GQ команда может быть использована для переформатирования комментарии и другой текст.

В Emacs вы можете набрать M-xindent-region после выбора региона. (Такие, как с M- < и M->.) Кроме того, можно переформатировать комментарии с M-хfill-paragraph.

+2

emacs: Escape-x indent-region. (Сначала выберите регион.) –

+1

и используйте 'M- < C-space M->' для выбора всего текущего буфера ... – dmckee

+0

Emacs не может делать так называемый «сложный отступ», т. Е. Заставлять фигурные скобки висящими, или наоборот. [Это wiki] (http://www.emacswiki.org/emacs/IndentingC) советы использовать внешние инструменты. –

2

bcpp, доступный в любом дистрибутиве linux (и, возможно, для mingw/cygwin, но я его не проверял) является индентором и декодером C++. Вы можете параметризовать, как это работает с кодом.

1

Еще один короткий ключ в Visual Studio 2008:

Ctrl + A, Alt + F8

+0

Не работает с кодом Qt. в заголовочных файлах каждый сигнал, макрос слота имеет отступы на один уровень больше. Un-indentation выполняется только тогда, когда наступает следующий открытый/закрытый/защищенный. –

3

Это в ответ на ОП и другие плакаты: Я работаю под Windows, и был ища отступы. Это то, что я узнал:

Я пробовал bcpp. Кажется, он довольно старый (более или менее с 1996 года), и вам нужно найти windows exe. Я нашел его здесь: http://www.zeusedit.com/zforum/viewtopic.php?t=1067. Тем не менее, я думаю, что это не стоит того, чтобы беспокоиться, так как это может только пространство/вкладка, уровень отступов и преобразование фигурных скобок.

Тогда есть Художественный стиль, который является новее и на sourceforge. Вроде бы вполне способен, но он не может, например, переформатирование пространства вокруг имен и параметров (например, функции, включите if (a (b)) в if (a(b)).

Мне нравится Cygwin отступа (http://www.cygwin.com/) лучше, но это работает только хорошо в файлах, разделенных новой линией, поэтому вы должны использовать его как «dos2unix < infile | indent ...». Но отступ не будет переформатировать комментарии в коробке ... :)

Может быть, комбинация художественного стиля и отступ Cygwin работает лучше всего , Теперь я использую эту командную строку: astyle --style=kr -s3 --break-closing-brackets < infile.cpp | dos2unix | indent --no-tabs --k-and-r-style --indent-level 3 --dont-cuddle-else | unix2dos. Я доволен, согласен, но, кроме того, он дает очень хороший результат. :)

+1

Я считаю, что * Художественный стиль * ** может ** обрабатывать пространства переформатирования в настоящее время с опцией '--unpad-paren'. – Magnus

5

Еще один инструмент для автоматического форматирования кода C++ - clang-format.

0

В NetBeans, вы можете просто сделать

Alt + Shift + F

Пожалуйста, убедитесь, что плагины установлены для соответствующего языка. Например, для отступов PHP-кода вам нужно выбрать netbeans PHP или установить плагины PHP из репозитория.

Смежные вопросы