我是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
中声明并在minty_util.h
中定义的函数,我得到了上面给出的表格的大约6个错误(其中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
不包含任何内容如果有人能够解释为什么我遇到这个问题,我会非常感激,因为我一直试图解决这个问题几个小时(应该早点发布!)。