我是C新手,看了很多帖子试图处理这个问题,他们都说错误信息:
error: conflicting types for 'x'
发生是因为函数在声明之前就被使用了。这不是(至少不是以明显的方式)我的代码的情况。
我的项目中有几个文件:
minty.c
词法分析器.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
对于在 minty_util.h
中声明并在 中定义的函数,此时我得到大约 6 个上述形式的错误(其中
。根据我的阅读,它可能与每个文件 x
是函数名称) >minty_util.c#includes
其他文件的方式有关,所以这里是每个文件的包含(明显的东西,如 stdio.h
省略):
minty.c
包括minty_util.h
和lexer.h
lexer.c
包括lexer.h
lexer.h
包括minty_util.h
(因为它包含使用minty_util.h
中指定的 typedef 的前向声明)minty_util.c
包含minty_util.h
minty_util.h
不包含任何内容
如果有人能阐明我为什么遇到这个问题,我将不胜感激,因为我已经尝试解决这个问题几个小时了(应该早点发布!)。
最佳答案
关于c - 错误 : conflicting types for 'x' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17682793/