错误:'x'的冲突类型

时间:2013-07-16 17:05:54

标签: c gcc types include

我是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.h中定义的函数,我得到了上面给出的表格的大约6个错误(其中minty_util.c是函数名称)。根据我的阅读,它可能与每个文件#includes其他文件的方式有关,所以这里是每个文件的包含(省略了stdio.h等明显的东西):

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

如果有人能够解释为什么我遇到这个问题,我会非常感激,因为我一直试图解决这个问题几个小时(应该早点发布!)。

1 个答案:

答案 0 :(得分:3)

检查标题保护。它说如果你不止一次包含一个文件就会出现问题

查看以下链接

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