¿Por qué el programa astyle no formatea mi archivo fuente c?
Antecedentes: copié y pegué el archivo fuente ac de gitlab y, por alguna razón, el archivo resultante estaba mezclado. Esperaba poder ejecutar el archivo con un estilo y obtener un archivo bien formateado, pero mis diversos intentos no han tenido efecto. Cada intento ha resultado en un mensaje que dice: "Sin cambios ecl-hello-world.c"
Aquí está el archivo fuente con formato incorrecto:
#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; }
Aquí están las invocaciones de un estilo que he probado:
astyle ecl-hello-world.c
astyle --style=allman --indent=spaces=4 ecl-hello-world.c
astyle --style=linux ecl-hello-world.c
Respuesta1
El problema es que una declaración de preprocesador de C tiene que estar sola en una línea; no puedes tener dos #includes en la misma línea y no puedes tener tu definición principal después de #include.
Cuando lo probé de la forma en que lo había pegado, recibí el mismo mensaje de error que usted (aunque sabía que un compilador daría un ataque). Después de agregar un salto de línea después de cada #include, lo formateó. Entonces, a menos que solo lo hayas simplificado para pegarlo, probablemente ese sea el motivo; ciertamente no funcionó hasta después de que hice ese cambio.
Editar:
También lo probé con sangría GNU. También falla. La respuesta parece ser realmente arreglar la primera parte del archivo. ¿Por qué no lo detecta ni lo hace por sí mismo? Buena pregunta. ¿Hay alguna manera de hacer que funcione además de formatear un poco el archivo primero? No lo sé pero parece que no.