函数的多个定义,首先在此定义

时间:2013-04-13 01:37:59

标签: c definition

我正在为大学项目开发​​扫描仪/解析器,我遇到了这个错误:

  

stack.c 91:'[stack.c中的所有函数]'的多重定义   stack.c 91:首先在这里定义

由于某些原因,我似乎无法弄清楚编译器似乎在告诉我,我已经在同一个地方多次定义了相同的函数。

我开始使用一些框架代码和一个makefile,因此我自己编写的文件(stack.c,stack.h)与其余代码之间必然存在某种不正确的通信。

我一直在移动#includes并乱用makefile一个多小时,现在遇到越来越多的问题。应该如何设置?

stack.cstack.h是我写的用于symtab.csymtab.h的小文件。

2 个答案:

答案 0 :(得分:5)

symtab.h中,您#include了源文件stack.c。不要这样做,多重定义问题应该消失。

答案 1 :(得分:1)

我终于得到了(看似)工作的东西。作为user315052,我从.h文件中删除了所有#includes,并将它们放在.c文件中。然后我从symtab.h接收有关在stack.h中定义的类型的错误,所以我在symtab.h中#include stack.h并且它现在似乎正在工作(或者至少是编译)。