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

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

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

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

관련 정보