c - 错误 : conflicting types for 'x'

标签 c gcc types include

我是C新手,看了很多帖子试图处理这个问题,他们都说错误信息:

error: conflicting types for 'x'

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

我的项目中有几个文件:

  • minty.c
  • 词法分析器.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

对于在 minty_util.h 中声明并在 中定义的函数,此时我得到大约 6 个上述形式的错误(其中 x 是函数名称) >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 不包含任何内容

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

最佳答案

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

看下面的链接

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

关于c - 错误 : conflicting types for 'x' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682793/

相关文章:

c - fscanf 失败 [^,]

C语言调用嵌套函数

c++ - 在 gcc 上使用 addcarry 得到奇怪的优化结果

scala - 尝试从 Scala 中的其他类型生成类型

c++ - 如何用不同的数据类型调用同一个函数?

检查子 PID 是否正在等待 Scanf

c - 我应该使用什么 : strcpy or pointers?

c - 为什么我的输出字符串的 17 个字符被替换为 'o' ?

c++ - 如何在旧版本的 gcc 系统上动态链接到 libc.so.6、libstdc++.so.6 的本地拷贝

postgresql - 用于循环平均的自定义 PostgreSQL 聚合