鸿蒙文学网

手机浏览器扫描二维码访问

第三十五章 作用域上(第1页)

我和小弦子兴致冲冲地打开了各自电脑上的编辑器,按照老爹刚才所将的内容,依葫芦画瓢定义了add函数。

「呀!

编译出错了!

我确认了一边代码的书写应该没有错,然后凑近小弦子的屏幕看了看他那边的情况,没想到小弦子那边居然没有出任何问题,编译成功了!

这是怎么回事?

借住翻译软件,我大概弄明白了错误信息,原来是我定义函数的地方有误。

通过对比我和小弦子的代码,我发现自己定义函数的位置在main函数中,而小弦子定义在main函数之外。

「在c语言中,一个函数是不能定义在另外一个函数之内的!

老爹不着痕迹地看了我的代码一眼,瞬间就看出了问题所在。

「原来是这样!

我在心里说了一声,然后就将代码剪切粘贴到main函数后边,至于为什么是后边嘛,因为小弦子放在前边的,我可不想和他一样。

这回编译倒是通过了,但是报了一个警告信息:「implicitdeclarationoffunctionadd」

意思是函数add隐式声明。

这让我一头雾水,隐式声明又是个什么鬼意思?关键是小弦子那边什么信息都没有输出!

难道问题出在顺序上面?

我在心中暗自狐疑,因为现在我和小弦子的代码唯一不同的地方就是定义main函数和add函数的位置不一样。

小弦子那边add函数定义在main函数前,而我定义在main函数后边。

为了验证心中的猜想,于是我又将它们的顺序调换了一下,警告信息果然消失了!

我运行了一下,程序得到了预期的结果,证明逻辑是没有问题的。

接着我又将mian和add顺序恢复到原来的样子,再次编译,警告信息果然又出现了。

我尝试着运行程序,居然也得到了正确的结果!

「刚才我就说了,在使用一个函数之前,必须要先声明它,否则就会报『implicitdeclarationoffunctionadd』警告。

所以我们在main函数中使用add函数,就应该在main函数之前声明add。

当然了,如果在程序中我们压根就没有定义这么一个函数,除了会有这句警告之外,还会有一个错误:『undefinedreferencetoadd』」

我试了一下,果真如同老爹所言。

「那为什么我在main函数后面声明add,程序运行的结果依旧是对的呢?」

「这个就是c语言不严谨的地方了,以后随着你们逐渐深入了解c语言,其实类似这样的问题还有很多。

所以后来的c对这些问题进行了修复,整个体系就更为严谨、标准化。

老爹笑了笑。

「哦,好吧!

原来那些开发c语言的科学家也会有bug的时候啊!

「当然了,我之前都给你说过了,无论是技术多么牛的程序员,都不可能排着胸脯说自己的程序没有任何的bug,特别是软件体系特别庞大的时候。

其实刚刚那个问题,add也不是不可以放在main函数后面,如果我们把函数的声明和实现分开的话就行了。

函数的定义分为声明和实现两个过程,你们现在写的这种形式是将两个过程融合在一起了,如果我们把add的声明放在main函数前边,定义放在后边就不会有警告信息了,就像这个样子:

intadd(inta,intb);

热门小说推荐
爱的双面埋伏

爱的双面埋伏

一个稚嫩的小女生,在对的时间遇到了那个似乎自己觉得那个对的人,被爱情冲昏了头脑,为了自己心爱的人貌似什么都能放弃可是好景不长不辞而别又遭遇了车祸的他在几年后的出现给她带来爱人和好朋友的背叛正因为这些才让她变得更强大!...

女神聊天群

女神聊天群

校花误拉我加入了一个聊天群,发现里面全都是美女,而且天天都晒福利小照片和劲爆小视频,直到她们为了对付现实中的我,开始实行所谓的母猪计划,我潜在群中,倍感压力...

秦九州林宛白全文免费阅读

秦九州林宛白全文免费阅读

一代战神秦九州重归都市,为弥补遗憾,搅动风起云涌,以不败之资横行四方,诸天震颤。...

狂王拦道:王妃别想逃

狂王拦道:王妃别想逃

作者弱十七的经典小说狂王拦道王妃别想逃最新章节全文阅读服务本站更新及时无弹窗广告小说一朝穿越,再现芳华,遇见他是偶然还是宿命。金戈铁马,马革裹尸,儿女情长亦有家国天下。生而不往,死去无门,纠缠半生终究独自茕茕。...

金牌强手

金牌强手

昆仑少年叶离武道入圣,医术无双,下山入世,调戏性感御姐,拯救傲娇警花,保家卫国,匡扶正义,成就一代宗师!...

重生地主婆

重生地主婆

看高干是怎么修炼成地主婆的看私生女是怎样修炼成学霸的手握空间能种田,系统交易可益智妖魔恶鬼并不可怕,可怕的是笑着承诺帮你的伪施恩者她感激了多年的女人才是害死她们母女俩的恶魔说来说去还不是因为她是上位失败的小三女儿她就是那个所谓爱情结晶的失败品替婚受辱能想象的苦都尝了个遍重新来过,她想,好人难做,还是学坏容易系统傍身,辣手高干,学霸是她,不代嫁...

每日热搜小说推荐