为什么我不能使用char作为函数的参数?

时间:2016-11-07 03:12:33

标签: c char

我的代码上有以下功能:

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”);该程序效果很好,错误仍然与显示的错误相同,所以我认为这表明错误必须存在。

1 个答案:

答案 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规则来调用未声明函数的函数行为。