Нахождение несбалансированных скобок и скобок

gcc 4.6.0 GNU Emacs 23.2.1

У меня есть некоторый код на c, и в какой-то момент я, должно быть, допустил опечатку. И теперь я остаюсь с неуравновешенными вьющимися кистями или скобками.

У меня есть около 2000 строк кода, и мне просто интересно, есть ли способ найти их?

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

Большое спасибо за любые предложения,

4 ответа

Решение

В Emacs вы можете использовать M-x check-parens, См. http://www.gnu.org/software/libtool/manual/emacs/Parentheses.html

Я бы предложил добавить "#ifdef 0 .... #endif" вокруг блоков кода, пока исходный код не скомпилируется. Продолжайте регулировать размер кода ifdef'd out, пока не сузите чанк, который компилируется, когда ifdef'd out, и не делает иначе. Этот кусок будет содержать несбалансированную скобку.

Лично я бы начал с того, что определял бы почти весь файл и двигал "#ifdef 0" впереди каждой функции, пока не начал видеть ошибки компиляции.

Если у вас есть сумасшедшие длинные функции, используйте тот же подход, но внутри функции, которая доставляет вам проблемы (как только вы определили, какая это функция).

Один хороший момент для начала это выбор всех (M-x select-all), а затем отступ в коде (M-x indent-region). Поскольку emacs делает очень хороший отступ, вы заметите, где отступ не удался.

Кроме того, используя show-paren-mode (M-x show-paren-mode) emacs покажет вам подходящую пареню каждой конечной (и наоборот), чтобы вы могли просмотреть свой код.

Если вы хотите что-то более необычное, чем простое выделение, вы можете использовать разделители радуги: https://www.emacswiki.org/emacs/RainbowDelimiters

Вот небольшая запись в блоге об этом: http://emacs-fu.blogspot.com/2011/05/toward-balanced-and-colorful-delimiters.html

Другие вопросы по тегам