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プリプロセッサドアが1行になければならないことです。同じ行に 2 つの #include を持つことはできず、#include の後にデフォルト定義を持つことはできません。
あなたが貼り付けた方法で試したとき、私もあなたと同じエラーメッセージを受け取りました(コンパイラがエラーを作成していることを知っているにもかかわらず)。各#includeの後に改行を追加した後にフォーマットします。したがって、貼り付けプロセスを単純化しない限り、もちろん変更するまでは機能しなかった可能性があります。
編集する:
私もちょうどGNUインデントしようとしました。また失敗しました。答えは、ファイルの最初の部分を回復するようです。なぜ自分で検出して実行できないのですか?良い質問。まず、ファイル自体をフォーマットする以外にこれを行う方法はありますか?よくわかりませんが、そうではありません。