我有一个具有两个函数的程序,其中一个函数计算文件中的单词数,并且运行良好,另一个函数计算特定单词在文件中出现的次数。这个las函数确实工作得很好(我已经测试了它与主函数隔离),但是当我使用functions.h文件在主函数中订购了所有内容时,我得到了这个。
有问题的函数是word_cnt(FILE*, char*)
当我编译时,我得到这个:
word.c:3:5: error: conflicting types for ‘word_cnt’
int word_cnt(FILE* fp, char* argv[2])
In file included from word.c:1:
functions.h:7:5: note: previous declaration of ‘word_cnt’ was here
int word_cnt(FILE*, char*);
在word.c文件中,(包含有问题的word_cnt函数的文件)函数的定义如下
int word_cnt(FILE* fp, char* argv[2])
而在头文件中,原型(prototype)是这样的:
int word_cnt(FILE*, char*);
我不明白......定义是正确的,为什么编译器认为我正在重新定义它?
图片在这里 https://drive.google.com/open?id=1zhS3iaFURJ0HyRgcy733NsT4trfzFDve
最佳答案
在源文件中,第二个参数的类型为“char 指针的数组 2”。
在 header 中,第二个参数的类型为“指向 char 的指针”。
它们不是同一类型,并且不兼容。前者实际上是一个 char **
,而后者是一个 char *
。
关于c - 原型(prototype)与函数定义不匹配,但确实匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57662158/