c - 原型(prototype)与函数定义不匹配,但确实匹配

标签 c types declaration

我有一个具有两个函数的程序,其中一个函数计算文件中的单词数,并且运行良好,另一个函数计算特定单词在文件中出现的次数。这个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/

相关文章:

c - 为什么 c 数组声明为变量名而不是类型

创建头文件并在 C 中测试它

typescript - Mikro-orm 属性类型日期和字段类型字符串的迁移错误

c - 想知道此声明与代码中的注释相比有什么问题吗? - 初学者在这里

c - C 中的共享全局 const 变量,在 mexFunction() 中定义

haskell - Haskell 中的类型条件控制

c - Gets/fgets跳过C中的输入步骤

c - 尝试将文件中的某些值读入 C 中的数组

在 vb.net 中调用 winAPI 函数

php - postgresql 类型错误