标题:我想知道这个错误信息
只看楼主
raozhihao201
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-12-6
结帖率:0
已结贴  问题点数:20 回复次数:4 
我想知道这个错误信息
#include <stdio.h>

void show()
{
    printf("随便弄一下\n");
}

int main()
{
    show();
    return 0;
}


这是我写的一小段代码,能正常运行
但当我把show()函数放在main函数下面的时候,VS2015编译提示

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    C2371    “show”: 重定义;不同的基类型    练习2    f:\c\练习2\练习2\练习.c    10   

请问这是为什么?


而当我把void show()放在main下面,并且改成了int show()时却又可以运行成功。编译器提示

1>f:\c\练习2\练习2\练习.c(6): warning C4013: “show”未定义;假设外部返回 int
1>f:\c\练习2\练习2\练习.c(12): warning C4716: “show”: 必须返回一个值
1>  练习2.vcxproj -> F:\C\练习2\Debug\练习2.exe
1>  练习2.vcxproj -> F:\C\练习2\Debug\练习2.pdb (Full PDB)
========== 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 ==========

这又是为什么?
小白实在搞不懂这些,话说,我需要懂这个吗,可是我还是想弄明白,为什么这三种操作会有各自不同的结果
搜索更多相关主题的帖子: 信息 编译器 return include 项目 
2016-12-06 20:25
哈斯佛道
Rank: 2
等 级:论坛游民
帖 子:23
专家分:81
注 册:2016-8-15
得分:10 
show()是个函数,函数调用要先声明。请楼主遵循先声明再调用的规则,函数本身可以放main后面。
2016-12-06 20:38
raozhihao201
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2016-12-6
得分:0 
回复 2楼 哈斯佛道
原谅我有点蠢,学习的方法不太对,为什么void show()放在int main()的上面能用呢,是不是就是你说的这是表示先声明了

我去了详细再了解下函数的调用,3Q

改成int show()放在main的下面的话那应该怎么改才能没有错误呢???
2016-12-06 20:51
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
得分:10 
基础啊~
int main()
{
    void show();
    show();
    return 0;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2016-12-06 22:55
哈斯佛道
Rank: 2
等 级:论坛游民
帖 子:23
专家分:81
注 册:2016-8-15
得分:0 
回复 3楼 raozhihao201
如果被调函数的定义在调用之前可以不必加声明。还有被调函数的类型为整型时,C语言允许在调用前不作声明。楼主可以参考下谭浩强的书仔细看一下
2016-12-07 20:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-472053-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072823 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved