首页 > 解决方案 > 原型与函数定义不匹配,但确实如此

问题描述

我有一个具有 2 个函数的程序,其中一个计算文件中的单词数,并且运行良好,另一个计算特定单词出现在文件中的 tymes 数。这个 las 函数确实工作得很好(我已经将它与 main 隔离了),但是当我用 functions.h 文件在 main 中订购所有东西时,我得到了这个。

有问题的函数是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])

在头文件中,原型是这样的:

int word_cnt(FILE*, char*);

我不明白....定义是正确的,为什么编译器认为我在重新定义它?

图片在这里 https://drive.google.com/open?id=1zhS3iaFURJ0HyRgcy733NsT4trfzFDve

标签: ctypesdeclaration

解决方案


在源文件中,第二个参数的类型为“array 2 of pointer to char”。

在标头中,第二个参数的类型为“指向字符的指针”。

这些不是同一类型,也不兼容。前者实际上是 a char **,而后者是 a char *


推荐阅读