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 들여쓰기를 시도했습니다. 또한 실패했습니다. 대답은 파일의 첫 번째 부분을 복구하는 것 같습니다. 왜 스스로 감지하고 수행하지 못하는 걸까요? 좋은 질문. 먼저 파일 자체를 포맷하는 것 외에 이 작업을 수행할 수 있는 방법이 있습니까? 잘 모르겠지만 아닌 것 같습니다.