astyle 不会更改源文件格式

astyle 不会更改源文件格式

为什么 astyle 程序没有格式化我的 c 源文件?

背景:我从 gitlab 复制并粘贴了 ac 源文件,由于某种原因,生成的文件很混乱。我希望能够通过 astyle 运行该文件并得到一个格式良好的文件,但我的各种尝试都没有效果。每次尝试都会产生一条消息:“Unchanged ecl-hello-world.c”

这是格式错误的源文件:

#include <stdio.h> #include <ecl/ecl.h> int main (int argc, char **argv) {   /* Initialize ECL */   cl_boot(argc, argv);   /* Initialize the library we linked in. Each library    * has to be initialized. It is best if all libraries    * are joined using ASDF:MAKE-BUILD.    */   extern void init_lib_HELLO_LISP(cl_object);   ecl_init_module(NULL, init_lib_HELLO_LISP);   cl_object result= cl_eval(c_string_to_object("(hello-lisp)"));   ecl_print(result, ECL_T);   cl_object my_fun = cl_eval(c_string_to_object("(lambda (x) (1+ x))"));   ecl_print(my_fun, ECL_T);   result=cl_funcall(2, my_fun, ecl_make_fixnum(8));   ecl_print(result, ECL_T);   ecl_terpri(ECL_T);   cl_shutdown();   return 0; }

以下是我尝试过的 astyle 调用:

astyle ecl-hello-world.c

astyle --style=allman --indent=spaces=4 ecl-hello-world.c

astyle --style=linux ecl-hello-world.c

答案1

问题是 C 预处理器语句必须单独占一行;你不能在同一行上有两个#include,并且你不能在#include 之后有你的主定义。

当我按照您粘贴的方式尝试它时,我收到了与您相同的错误消息(尽管我知道编译器会出错)。在每个 #include 之后添加换行符后,它确实对其进行了格式化。因此,除非您只是简化了粘贴过程,否则可能就是原因;当然,直到我做出改变之后它才起作用。

编辑:

我也刚刚尝试过 GNU 缩进。它也失败了。答案似乎确实是修复文件的第一部分。为什么它自己不检测并执行此操作?好问题。除了先格式化文件本身之外,还有什么方法可以让它工作吗?我不知道,但好像没有。

相关内容