Я не верю, что есть такой инструмент.В C порядок объявления и определения обычно не имеет значения.Конечно, существует исключение из цикла зависимостей (a()
вызывает b()
, который вызывает a()
), но когда функции объявляются в заголовочном файле, даже это не является проблемой, поскольку все объявления фактически являются "Для обработки циклов зависимостей необходимы «прямые» объявления.
Таким образом, порядок определений в единице перевода по существу зависит от вкуса и стиля.Таким образом, это не та особенность, к которой склонны обращаться дизайнеры-редакторы, поскольку усилия по созданию общих и мощных функций, достаточных для преобладания пользователей, могут считаться чрезмерно большими.Подумайте, сколько времени понадобилось (непрограммируемым) редакторам для того, чтобы обычно иметь гибкие и мощные функции автоматического отступления и переформатирования.
Существует также риск нарушения логики, грамматики или читабельности кода при его автоматической реорганизации.,Например, если комментарии находятся между определениями функций, как инструмент узнает, идет ли комментарий с определенной функцией, или с группой функций, или с функцией выше?И как @Yuri упоминает выше, как насчет функций внутри # if / # else / # endif блоков?А как насчет тонких случаев, таких как макросы, которые расширяются до функций или директивы #include, зажатые между определениями функций?Я полагаю, что функция переупорядочения может ограничить его домен простым делом, но если дело становится слишком простым, его апелляция, соответственно, ограничивается, и она не публикуется публично или широко.
Все это, как говорится,Я думаю, что имея в своем распоряжении богатый набор инструментов, такую функцию было бы не слишком сложно реализовать, хотя, если бы я делал это, я ожидал, что при первой непредвиденной трудности мне будет интересно, не будет ли легчепросто отредактируйте исходные файлы вручную.В конце концов, многострочное копирование и вставка довольно просты.