C警告冲突类型

我的代码是

void doc(){ //mycode return; } 

我的警告是

 conflicting types for 'doc' 

任何人都可以解决它。

在C中,如果在调用函数时没有函数原型,则假定它返回一个int并获取一个未指定数量的参数。 然后,当您稍后将函数定义为返回void并且不带参数时,编译器将此视为冲突。

根据代码的复杂程度,您可以执行一些简单的操作,如在使用函数之前移动函数的定义,或者在头文件中添加函数声明并将其包含在内。

在任何情况下,净效应应该是在使用之前使函数原型可用。

如果你添加

 void doc(void); 

在使用函数之前,您将在范围内看到原型,并且您的警告将消失。

我认为这是你警告的最可能原因。 您可能在代码中有明确的不兼容的doc声明,但我们无法分辨,因为您没有发布完整的代码。

尝试在程序文件中的main函数之前编写doc函数。

你用其他类型/签名声明它并用其他类型/签名定义..

喜欢

 int doc(); void doc() { } 

会给你这个警告。

这显然不是你完整的代码。

但是,该错误意味着还有另一个doc声明(可能是一个全局变量?头文件中的某些内容?),它不是一个不带参数的void函数。

“doc”可能已经用不同的类型声明了……你应该尝试找到之前的声明!

您之前已经声明了doc ,或者调用了未声明的doc因此强制编译器从该调用推断出doc的可能参数声明。 现在,您引用的doc的定义与之前的声明(显式的或由编译器推断的)不同,后者被报告为“冲突”。

确保你没有在你的代码中的任何地方使用过doc!我认为这只会给你带来麻烦!

声明上面的function使用解决了它。

例:

 void recordAudio(){ //declaration doStuff(); } void initialise(){ recordAudio(); // usage } 

如上所示, recordAudio()的用法高于使用的位置。