C/C++知识点之C语言中函数声明实现的位置
小标 2018-11-13 来源 : 阅读 804 评论 0

摘要:本文主要向大家介绍了C/C++知识点之C语言中函数声明实现的位置,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点之C语言中函数声明实现的位置,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

在学习C语言的时候我遇到了这么个事情,因为之前先学习的C#,在C#编译器中,函数的声明位置不会影响编译的结果,但是在C语言中却发生了错误

先看一段代码:

#include 

int main()
{
    fun1();
    fun1();
    fun1();
    fun2(); 
    return 0;


/*方法1.用于输出消息1*/
void fun1()
{
    printf("For he‘s a jolly good fellow!\n");
}

/*方法2,用于输出消息2*/ 
void fun2()
{
    printf("Which nobody can deny!\n");
}

这时候编译器提示如下
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c...[Error] C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c:27: error: conflicting types for ‘fun1‘[Error] C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c:10: error: previous implicit declaration of ‘fun1‘ was here[Error] C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c:33: error: conflicting types for ‘fun2‘[Error] C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c:13: error: previous implicit declaration of ‘fun2‘ was here[Warning] C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c:35:2: warning: no newline at end of file
编译中止 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c: 4 个错误, 1 个警告
提示出错,出现这个问题的原因是函数没找到?对于E文不好的我,这下可难坏我了,怎么办...
那我换个方式试试

#include 
/*方法1,用于输出消息1*/
void fun1()
{
    printf("For he‘s a jolly good fellow!\n");
}

/*方法2,用于输出消息2*/ 
void fun2()
{
    printf("Which nobody can deny!\n");
}

int main()
{
    fun1();
    fun1();
    fun1();
    fun2(); 
    return 0;


编译之后结果显示
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c...
完成编译 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c: 0 个错误, 0 个警告生成 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.o
说明,之前的猜测正确,那么我们再想想,C语言学习的时候说过函数声明,那我们要不要再试试把之前编译错误的那段代码在main函数之前声明一次看看能不能编译成功

 1 #include 
 2 
 3 void fun1(void);
 4 void fun2(void);
 5 
 6 int main()
 7 {
 8     fun1();
 9     fun1();
10     fun1();
11     fun2(); 
12     return 0;
13 } 
14 
15 /*方法1,用于输出消息1*/ 
16 void fun1()
17 {
18     printf("For he‘s a jolly good fellow!\n");
19 }
20 
21 /*方法2,用于输出消息2*/ 
22 void fun2()
23 {
24     printf("Which nobody can deny!\n");
25 }

 编译器编译结果:
--------------------配置: mingw5 - CUI Debug, 编译器类型: MinGW--------------------
正在编译 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c...
完成编译 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.c: 0 个错误, 0 个警告生成 C:\Users\yinhe\Documents\C-Free\Temp\Practice2-12-4.o
 
编译成功,说明了C和C#的区别之处,所以在以后C编程之旅中我们需要谨记需要使用自定义函数的时候,那么就尽量让自定义函数的声明和实现出现在main 函数之前。
在这里我想说,娘啊,我好后悔上学的时候不好好学英语~~

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程