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 縮排。它也失敗了。答案似乎確實是修復文件的第一部分。為什麼它自己不檢測並執行此操作?好問題。除了先格式化文件本身之外,還有什麼方法可以讓它運作嗎?我不知道,但好像沒有。

相關內容