Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C警告冲突类型_C_Warnings - Fatal编程技术网

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;
}