我是 C 新手,我已经阅读了许多试图解决这个问题的帖子,他们都说错误消息:
error: conflicting types for 'x'
发生是因为在声明函数之前使用了函数。这不是(至少不是以明显的方式)我的代码的情况。
我的项目中有几个文件:
minty.clexer.clexer.hminty_util.cminty_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.hlexer.c包括lexer.hlexer.h包括minty_util.h(因为它包含使用中指定的 typedef 的前向声明minty_util.h)minty_util.c包括minty_util.hminty_util.h不包括任何东西
如果有人能解释我为什么会遇到这个问题,那将不胜感激,因为我已经尝试了好几个小时(应该早点发布!)。