2

私は大学のプロジェクトのスキャナー/パーサーに取り組んでいますが、次のエラーに遭遇しました:

stack.c 91: '[all functions in stack.c]' の複数定義
stack.c 91: 最初にここで定義

なんらかの理由で、同じ場所で同じ関数を複数回定義したことをコンパイラが教えているようです。

最初にいくつかのスケルトン コードと makefile が与えられたので、私が完全に自分で書いたファイル (stack.c、stack.h) と残りのコードの間で、ある種の誤った通信が行われているに違いありません。

#includes を動き回り、1 時間以上メイクファイルをいじっていますが、ますます多くの問題が発生しています。これはどのように設定する必要がありますか?

stack.cとは、とstack.hで使用するために私が書いた小さなファイルです。symtab.csymtab.h

4

2 に答える 2

5

では、ソース ファイルsymtab.h#includeing していますstack.c。そうしないと、その複数定義の問題はなくなるはずです。

于 2013-04-13T02:15:14.703 に答える
1

私はついに(一見)うまくいくようになりました。user315052 として、.h ファイルからすべての #includes を削除し、代わりに .c ファイルに入れました。その後、stack.h で定義された型に関する symtab.h からエラーを受け取っていたので、symtab.h に stack.h を #include したところ、動作する (または少なくともコンパイルする) ようになりました。

于 2013-04-13T03:02:17.300 に答える