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