我正在为大学项目开发扫描仪/解析器,我遇到了这个错误:
stack.c 91:'[stack.c中的所有函数]'的多重定义 stack.c 91:首先在这里定义
由于某些原因,我似乎无法弄清楚编译器似乎在告诉我,我已经在同一个地方多次定义了相同的函数。
我开始使用一些框架代码和一个makefile,因此我自己编写的文件(stack.c,stack.h)与其余代码之间必然存在某种不正确的通信。
我一直在移动#includes并乱用makefile一个多小时,现在遇到越来越多的问题。应该如何设置?
stack.c
和stack.h
是我写的用于symtab.c
和symtab.h
的小文件。
答案 0 :(得分:5)
在symtab.h
中,您#include
了源文件stack.c
。不要这样做,多重定义问题应该消失。
答案 1 :(得分:1)
我终于得到了(看似)工作的东西。作为user315052,我从.h文件中删除了所有#includes,并将它们放在.c文件中。然后我从symtab.h接收有关在stack.h中定义的类型的错误,所以我在symtab.h中#include stack.h并且它现在似乎正在工作(或者至少是编译)。