冲突类型(函数)

时间:2015-11-20 02:00:57

标签: c

我有两个.c文件,main.ctest.c 以及两个标头文件type.hinterface.h

其中interface.h包含type.h

test.c包含标头文件"interface.h"

#include "interface.h"
#include <stdlib.h>
#include <stdio.h>

int create(Ptr * p) {
//do stuff

}

int addToFront(Ptr * p, void * T) {
//do stuff later
}

main.c还包括"interface.h"

#include "interface.h"
#include <stdio.h>
#include <stdlib.h>

并且有一个我想在test.c

中调用的函数
void isEqual(void * L, void * Item) {

}

我如何在test.c中调用函数isEqual?

因为在test.c中执行此操作:

isEqual(p,T); //in the addToFront function,

具体是隐式声明/冲突类型错误。我不允许把这些功能放到test.c中,所以我不得不像这样打电话给他们,包括警卫可能会解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

isEqual的原型需要在test.c中提供,因为您正在调用test.c中的函数。如果原型不在interface.h并且您不允许更改interface.h,那么您需要a)使用原型创建自己的头文件,b)在{{1}中包含该头文件}和main.c。 - user3386109

答案 1 :(得分:0)

您说的是冲突类型错误。这表明在test.c的定义之前,main.c未与链接,但包含isEqual中。在这种情况下你可以放原型

void isEqual(void *L, void *Item);

早期test.c

页。 s。:名为isEqual的函数有void返回类型,这很奇怪。