| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2728 人关注过本帖
标题:我想知道这个错误信息
只看楼主 加入收藏
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
快速回复:我想知道这个错误信息
数据加载中...
 
   



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

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