我有两个.c文件,main.c
和test.c
以及两个标头文件type.h
和interface.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中,所以我不得不像这样打电话给他们,包括警卫可能会解决这个问题吗?
答案 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
返回类型,这很奇怪。