astyle은 소스 파일 형식을 변경하지 않습니다.

astyle은 소스 파일 형식을 변경하지 않습니다.

astyle 프로그램이 내 C 소스 파일을 포맷하지 않는 이유는 무엇입니까?

배경: gitlab에서 ac 소스 파일을 복사하여 붙여넣었는데 어떤 이유에서인지 결과 파일이 뒤죽박죽되었습니다. 나는 스타일을 통해 파일을 실행하고 멋진 형식의 파일을 얻을 수 있기를 바랐지만 다양한 시도는 효과가 없었습니다. 시도할 때마다 "변경되지 않은 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 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 들여쓰기로도 시도해 보았습니다. 또한 실패합니다. 대답은 실제로 파일의 첫 번째 부분을 수정하는 것 같습니다. 왜 스스로 감지하고 수행하지 못하는 걸까요? 좋은 질문. 먼저 파일 자체를 포맷하는 것 외에 작동하도록 하는 방법이 있습니까? 잘 모르겠지만 아닌 것 같습니다.

관련 정보