C警告冲突类型
我的代码是C警告冲突类型,c,warnings,C,Warnings,我的代码是 void doc(){ //mycode return; } 我的警告是 conflicting types for 'doc' 任何人都能解决这个问题。这显然不是你的全部代码 但是,该错误意味着另一个doc(可能是全局变量?头文件中的某个内容?)声明不是不带参数的void函数。u已使用其他类型/签名声明它,并使用其他类型/签名定义它 像 将向您发出此警告。“doc”可能已使用其他类
void doc(){
//mycode
return;
}
我的警告是
conflicting types for 'doc'
任何人都能解决这个问题。这显然不是你的全部代码
但是,该错误意味着另一个
doc
(可能是全局变量?头文件中的某个内容?)声明不是不带参数的void
函数。u已使用其他类型/签名声明它,并使用其他类型/签名定义它
像
将向您发出此警告。“doc”可能已使用其他类型声明。。。
您应该尝试查找以前的声明 在C语言中,如果在调用函数时没有函数的原型,则假定它返回一个
int
,并接受未指定数量的参数。然后,当您稍后将函数定义为返回void
且不带任何参数时,编译器将此视为冲突
根据代码的复杂性,您可以做一些简单的事情,比如在使用函数之前移动函数的定义,或者在头文件中添加函数声明并包含它
在任何情况下,净效果应该是在使用函数原型之前使其可用
如果你加上
void doc(void);
在使用函数之前,您将在范围内看到一个原型,并且您的警告将消失
我认为这是你提出警告的最可能原因。您的代码中可能有一个显式的
doc
不兼容声明,但我们无法确定,因为您没有发布完整的代码。您以前声明过doc
,或者调用未声明的doc
,从而迫使编译器从该调用中推断出doc
的可能参数声明。现在,您引用的doc
的定义不同于之前的声明(无论是显式声明还是由编译器推导的声明),这是报告为“冲突”的声明。请确保您没有在代码中的任何位置使用doc!,
我想那只会给你带来麻烦 试着在程序文件中的主函数之前编写doc函数。在用法之上声明函数为我解决了这个问题 例如:
void recordAudio(){ //declaration
doStuff();
}
void initialise(){
recordAudio(); // usage
}
如上所示,
recordAudio()
的用法高于使用的位置。这是因为在调用函数之前没有创建任何函数原型。
所以编译器默认将返回类型设为int。但在定义函数时,您使用的返回类型为void,这与编译器的假设相冲突。这就是为什么“doc”会出现错误冲突类型的原因。
您可以通过在main之前添加函数原型来解决此问题
#include <stdio.h>
void doc();
int main()
{
doc();
}
void doc()
{
//mycode
return;
}
#包括
作废单据();
int main()
{
doc();
}
作废单据()
{
//麦可德
返回;
}
您可能在某处定义了一个以上的文档
,请检查您的包含项,错误消息应该会告诉您冲突声明的位置。他也可能在定义函数之前使用过该函数谢谢!请解释一下这是为什么?它代表函数的前向声明,是函数的原型。
#include <stdio.h>
void doc();
int main()
{
doc();
}
void doc()
{
//mycode
return;
}