是否有任何工具可以根据自动重新排序.c文件.h?
例如, foo.h
void function1();
void function2();
void function3();
Run Code Online (Sandbox Code Playgroud)
和 foo.c
void function2(){}
void function1(){}
void function3(){}
Run Code Online (Sandbox Code Playgroud)
我可以把它重新排序吗?
void function1(){}
void function2(){}
void function3(){}
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我在Ubuntu中使用Vim.
我不相信有这样的工具。在 C 中,声明和定义的顺序通常并不重要。a()当然,依赖循环(调用b()哪个调用)是例外a(),但是当在头文件中声明函数时,即使这也不是问题,因为所有声明实际上都是处理依赖循环所需的“前向”声明。
因此,翻译单元中定义的顺序本质上是品味和风格的问题。因此,这不是编辑器设计者倾向于解决的功能,因为创建足够通用和强大的功能以值得大多数用户使用的努力可能被认为是非常大的。想想(不可编程)编辑器花了多长时间才普遍拥有灵活而强大的自动缩进和重新格式化功能。
自动重组时还存在破坏代码逻辑、语法或可读性的风险。例如,如果注释位于函数定义之间,那么该工具如何知道注释是否与特定函数、一组函数或上述函数一起使用?正如 @Yuri 上面提到的,#if/#else/#endif 块内的函数怎么样?那么像扩展为函数的宏或夹在函数定义之间的 #include 指令之类的微妙情况又如何呢?我认为重新排序功能可以将其范围限制在简单的情况下,但如果情况变得太简单,那么它的吸引力相应就会受到限制,并且不会公开或广泛发布。
话虽这么说,我认为有了丰富的工具集可供使用,这样的功能实现起来不会太难,尽管如果我这样做,我预计在第一个意想不到的困难时,我会发现自己想知道它是否会手动编辑源文件并不容易。毕竟,多行剪切和粘贴非常容易。