gpt4 book ai didi

c中函数调用的冲突类型警告

转载 作者:行者123 更新时间:2023-12-02 06:56:01 26 4
gpt4 key购买 nike

我正在过一段c代码,突然遇到一个意想不到的疑惑。下面的代码向我抛出一个警告 :conflicting types for 'display',但是当我删除 void 时它工作正常。
有人可以向我解释确切的错误是什么吗?提前致谢。

#include<stdio.h>

main(){
display();
}
void display()
{
printf("hello world");
}

最佳答案

在 C99 之前的 C 中,如果函数原型(prototype)在函数之前不可用,编译器会假定函数返回 int

所以 display() 被假定返回一个 int。但是当编译器看到 display() 的实际定义时,就会发生冲突,因为实际的定义有 void 返回类型。

但是,此隐式 int 规则已从 C99 中删除。所以你的程序在技术上是无效的。你也可以

  • 在源文件的顶部声明display() 的原型(prototype),或者
  • display()的定义移到main()之上

关于c中函数调用的冲突类型警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31218839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com