我不断收到多次定义我的函数的错误。当然我的文件中只有一个文件和一个带有该名称的函数。 gcc哪里可以找到其他定义?
这是一个示例错误消息,但我得到了很多:
/tmp/ccerCzAD.o:main.c :(文本+位于0xDB):
首先在这里定义
/tmp/ccGbaGfJ.o:在函数`at':
dlist.c :(。text + 0xe3):`at'
的多重定义
我包含了“stdio.h”和“stdlib.h”。功能“at()”是否已经在其中一个中定义了?
答案 0 :(得分:2)
也许你在头文件中定义了这个函数,而不是声明它。
int at(void); /* declaration */
int at(void) { return 0; } /* definition */
通常的方法是将声明放在头文件和代码文件中的定义中。
答案 1 :(得分:1)
似乎在文件dlist.c和main.c
中定义了函数可能是这种情况吗?
文件dlist.h
int at();
file dlist.c
int at(){return 0;}
file main.c
#include "dlist.h"
int at(){return 1;}
int main()
{
return at();
}
答案 2 :(得分:0)
您可能还想:
#ifndef _DLIST_H
#define _DLIST_H
int at();
#endif
使用#include
在多个.c
文件中包含相同的标头时,可以防止出现同样的错误。