为了账号安全,请及时绑定邮箱和手机立即绑定

求大神!static的只限定于源文件问题

test.c的源码

#include <stdio.h>

static void say(){

    printLine();

    printf("I love imooc\n");

    printf("good good study!\n");

    printf("day day up!\n");

    printLine();

}

hello.c的源码

#include <stdio.h>

#include "test.c"

extern void printLine()     

{

   printf("**************\n");   

}

int main()

{

    say();

    return 0;

}


文中提到 这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。   所以我的say函数加了static之后不应该只能在test.c里面使用吗?为什么还可以在hello.c中使用,函数所处源文件到底是什么意思??有例子可举更好 谢谢各位

正在回答

2 回答

可能是文件的覆盖吧,不是粘贴而是覆盖

0 回复 有任何疑惑可以回复我~
#1

慕后端6482527 提问者

不懂。
2018-11-13 回复 有任何疑惑可以回复我~

emm......

hello.c是个源文件,#include"test.c"效果想想其实和#include<stdio.h>一样,那么也就是说引用以后,都是同一个源文件下了,相当于复制粘贴把test.c的东西拷过来。如导师给出的话中所说“限定该函数只能在其所处的源文件中使用”,那么这个条件在文件的迁移中满足,所以也就可以在hello.c中使用


1 回复 有任何疑惑可以回复我~
#1

慕后端6482527 提问者

那我static岂不是没用了。
2018-10-27 回复 有任何疑惑可以回复我~
#2

CassanBob 回复 慕后端6482527 提问者

对于static的作用我也很疑惑,所以我也在问其他大佬
2018-10-27 回复 有任何疑惑可以回复我~
#3

慕后端6482527 提问者 回复 CassanBob

我丢。。。
2018-10-27 回复 有任何疑惑可以回复我~
#4

遗失的美好灬 回复 慕后端6482527 提问者

我试了好多次,发现只是为了防止多重定义同名函数,因为编译器把hello.c和test.c一起执行了,两个文件都有say()函数,结果报错了
2018-10-30 回复 有任何疑惑可以回复我~
#5

慕后端6482527 提问者 回复 遗失的美好灬

666
2018-11-13 回复 有任何疑惑可以回复我~
#6

慕后端6482527 提问者 回复 遗失的美好灬

还是不太理解 为什么会重名 我只定义了一次啊
2018-11-13 回复 有任何疑惑可以回复我~
查看3条回复

举报

0/150
提交
取消
C语言入门
  • 参与学习       926020    人
  • 解答问题       20793    个

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

进入课程

求大神!static的只限定于源文件问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信