我是 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
在minty_util.c
. 根据我的阅读,它可能与每个文件其他文件的方式有关,所以这里是每个文件的包含(省略#includes
了明显的东西):stdio.h
minty.c
包括minty_util.h
和lexer.h
lexer.c
包括lexer.h
lexer.h
包括minty_util.h
(因为它包含使用中指定的 typedef 的前向声明minty_util.h
)minty_util.c
包括minty_util.h
minty_util.h
不包括任何东西
如果有人能解释我为什么会遇到这个问题,那将不胜感激,因为我已经尝试了好几个小时(应该早点发布!)。