1

我是 C 新手,我已经阅读了许多试图解决这个问题的帖子,他们都说错误消息:

error: conflicting types for 'x'

发生是因为在声明函数之前使用了函数。这不是(至少不是以明显的方式)我的代码的情况。

我的项目中有几个文件:

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

我编译lexer.cminty_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对于minty_util.hminty_util.c. 根据我的阅读,它可能与每个文件其他文件的方式有关,所以这里是每个文件的包含(省略#includes了明显的东西):stdio.h

  • minty.c包括minty_util.hlexer.h
  • lexer.c包括lexer.h
  • lexer.h包括minty_util.h(因为它包含使用中指定的 typedef 的前向声明minty_util.h
  • minty_util.c包括minty_util.h
  • minty_util.h不包括任何东西

如果有人能解释我为什么会遇到这个问题,那将不胜感激,因为我已经尝试了好几个小时(应该早点发布!)。

4

1 回答 1

3

检查标题保护。它说如果你多次包含一个文件就会有问题

看下面的链接

http://en.wikipedia.org/wiki/Include_guard

于 2013-07-16T17:09:38.547 回答