我的代码上有以下功能:
int leepos(char *entrada, char elem)
通过以下方式调用:
leepos(entrada,'y');
对我来说它看起来不错,但我收到以下错误:[错误]'leepos'的冲突类型
奇怪的是,我可以通过这些小修改使我的功能正常工作:
将功能定义为:
int leepos(char *entrada, char* elem)
用以下方式调用它:
leepos(entrada,"y");
一旦我更改了处理字符串处理字符串的逻辑,我就可以使它正常工作。
看起来错误是使用char作为参数,虽然它看起来很奇怪。知道为什么会这样吗?
我正在使用char:
给出显示错误的代码int main()
{
leepos("hi",'y');
leepos2("hi","y");
}
int leepos(char *entrada, char elem)
{
return 0;
}
int leepos2(char *entrada, char* elem)
{
return 0;
}
如果我删除行leepos(“hi”,“y”);该程序效果很好,错误仍然与显示的错误相同,所以我认为这表明错误必须存在。
答案 0 :(得分:2)
在调用函数之前,您需要对函数进行原型设计:
int leepos(char *entrada, char elem);
int main()
{
leepos("hi",'y');
}
int leepos(char *entrada, char elem)
{
return 0;
}
另一种方法是将整个函数体放在main
之前(第一行也作为原型)。
从C99开始,根本不允许调用尚未声明的函数。您看到的有关冲突类型的错误以及leepos2
的不同行为来自于使用C89规则来调用未声明函数的函数行为。