1

私は C を初めて使用します。この問題に対処しようとする多くの投稿を読みましたが、エラー メッセージは次のように表示されます。

error: conflicting types for 'x'

関数が宣言される前に使用されるために発生します。これは、(少なくとも明白な方法ではありませんが) 私のコードには当てはまりません。

私のプロジェクトにはいくつかのファイルがあります:

  • minty.c
  • lexer.c
  • lexer.h
  • minty_util.c
  • minty_util.h

私はコンパイルlexer.cし、次のようにminty_util.cします:

gcc -Wall -g -c lexer.c -o lexer.o
gcc -Wall -g -c minty_util.c -o minty_util.o

これらは両方とも正常にコンパイルされます。コンパイルしようとするとエラーが発生しますminty.c

gcc -Wall -g minty.c lexer.o minty_util.o -o minty

その時点で、 で宣言され、 で定義された関数について、上記の形式 (xは関数名) の約 6 つのエラーが発生します。私が読んだことから、それは各ファイルの他のファイルの方法と関係があるかもしれないので、各ファイルのインクルードは次のとおりです(次のような明白なものは省略されています):minty_util.hminty_util.c#includesstdio.h

  • minty.cを含みminty_util.hlexer.h
  • lexer.c含むlexer.h
  • lexer.hインクルードminty_util.h( で指定された typedefs を使用した前方宣言が含まれているためminty_util.h)
  • minty_util.c含むminty_util.h
  • minty_util.h何も含まない

なぜ私がこの問題を抱えているのか、誰かが光を当てることができれば、それは非常にありがたいです.

4

1 に答える 1