astyle не изменяет форматирование исходного файла

astyle не изменяет форматирование исходного файла

Почему программа astyle не форматирует мой исходный файл на языке C?

Предыстория: Я скопировал и вставил исходный файл ac из gitlab, и по какой-то причине полученный файл оказался перемешанным. Я надеялся, что смогу прогнать файл через astyle и получить хорошо отформатированный файл, но мои многочисленные попытки не дали никакого эффекта. Каждая попытка приводила к сообщению "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, которые я пробовал:

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 indent. Тоже не получается. Кажется, ответ действительно в том, чтобы исправить первую часть файла. Почему он не обнаруживает и не делает этого сам? Хороший вопрос. Есть ли способ заставить его работать, кроме как сначала немного отформатировать сам файл? Я не знаю, но, кажется, нет.

Связанный контент