2016-11-07 145 views
-2

我有我的代码如下功能:为什么我不能使用char作为函数的参数?

int leepos(char *entrada, char elem) 

这是被称为方式如下:

leepos(entrada,'y'); 

对于我来说,它看起来不错,但我得到以下错误:[错误]发生冲突类型“leepos”

奇怪的是,我可以让我的功能工作,这些小改动:

定义功能:

int leepos(char *entrada, char* elem) 

而且与调用它:

leepos(entrada,"y"); 

我可以使它正常工作,一旦我改变处理炭处理字符串的逻辑。

它看起来像错误然后在使用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该项目工程尼斯(“喜”,“Y”);,错误的是仍然与所示相同,所以我认为这表明错误必须在那里。

+5

错误可能不在您认为的地方。请提供一个显示问题的[mcve],以便给出明确的答案。 – kaylum

+1

回答标题中的问题:因为你做错了什么。我们其他人都可以做到。如果你显示了足够的代码,你已经有了答案。 ;耸耸肩: – enhzflep

+1

也许有'int leepos(char * entrada,char * elem);'在你的头文件中的某处。 – ymonad

回答

2

你需要调用它之前为原型的功能:

int leepos(char *entrada, char elem); 

int main() 
{ 
    leepos("hi",'y'); 
} 

int leepos(char *entrada, char elem) 
{ 
    return 0; 
} 

另一种方法是把整个函数体main前(第一行作为原型太)。

由于C99根本不允许调用尚未声明的函数。您看到的有关冲突类型的错误以及leepos2的不同行为来自于使用C89规则来调用对未声明函数的函数行为。

相关问题