hello.c里加exern我懂,可是为什么test.c函数前要加static才可以?

来源:5-13 内部函数与外部函数

慕粉4238264

2019-04-15 20:11

hello.c里加exern我懂,可是为什么test.c函数前要加static才可以?

写回答 关注

1回答

  • qq_佽飞勇遂_0
    2019-05-15 08:53:33

    可以这么理解#include "test.c"的作用是将say()方法加载到了运行环境中,这时内存有了一个say()

    say默认也被声明是extern的,相当于放在了公共区,换句话说就是跨文件全局作用域,方便各个文件调用,这时内存有了两个say(),该调用哪个?

    肯定就会造成冲突,main函数不知道该调用公共区的say(),还是被include进来的say(),所以要么:

    1. 注释#include "test.c",保留公共区的say()

    2. 为say()添加static, 这样include的时候,指定一个say(),没有公共区的say()

    以上为个人猜想,但基本符合实际,有多符合得去验证

    spceG

    解释的真到位,大佬喝茶

    2019-06-03 21:35:58

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926206 学习 · 20797 问题

查看课程

相似问题