Por que o programa astyle não está formatando meu arquivo de origem c?
Histórico: copiei e colei o arquivo de origem ac do gitlab e, por algum motivo, o arquivo resultante ficou confuso. Eu esperava poder executar o arquivo através de um estilo e obter um arquivo bem formatado, mas minhas várias tentativas não surtiram efeito. Cada tentativa resultou em uma mensagem dizendo: "Inalterado ecl-hello-world.c"
Aqui está o arquivo de origem malformado:
#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; }
Aqui estão as invocações de astyle que tentei:
astyle ecl-hello-world.c
astyle --style=allman --indent=spaces=4 ecl-hello-world.c
astyle --style=linux ecl-hello-world.c
Responder1
O problema é que uma instrução de pré-processador C precisa estar sozinha em uma linha; você não pode ter dois #includes na mesma linha e não pode ter sua definição principal após o #include.
Quando tentei do jeito que você colou, recebi a mesma mensagem de erro que você (mesmo sabendo que um compilador teria um ataque). Depois de adicionar uma quebra de linha após cada #include, ele foi formatado. Então, a menos que você tenha simplificado isso para colá-lo, provavelmente é por isso; certamente não funcionou até depois que fiz essa alteração.
Editar:
Eu também tentei com recuo GNU. Também falha. A resposta parece realmente corrigir a primeira parte do arquivo. Por que ele não detecta e faz isso sozinho? Boa pergunta. Existe uma maneira de fazê-lo funcionar além de formatar um pouco o arquivo primeiro? Não sei, mas parece que não.