课程
/后端开发
/C
/C语言入门
hello.c里加exern我懂,可是为什么test.c函数前要加static才可以?
2019-04-15
源自:C语言入门 5-13
正在回答
可以这么理解#include "test.c"的作用是将say()方法加载到了运行环境中,这时内存有了一个say()
say默认也被声明是extern的,相当于放在了公共区,换句话说就是跨文件全局作用域,方便各个文件调用,这时内存有了两个say(),该调用哪个?
肯定就会造成冲突,main函数不知道该调用公共区的say(),还是被include进来的say(),所以要么:
注释#include "test.c",保留公共区的say()
为say()添加static, 这样include的时候,指定一个say(),没有公共区的say()
以上为个人猜想,但基本符合实际,有多符合得去验证
spceG
举报
C语言入门视频教程,带你进入编程世界的必修课-C语言
1 回答test.c为啥要加static
4 回答到底是hello.c调用test.c的,还是test.c调用hello.c的函数
3 回答为什么test.c第二行的void前面要加static,不加就会有错误?
2 回答这样也可以啊,为什么非要在前面加个void函数
1 回答为什么"test.c"中的say()函数也要变成static?
购课补贴联系客服咨询优惠详情
慕课网APP您的移动学习伙伴
扫描二维码关注慕课网微信公众号