问答详情
源自:5-13 内部函数与外部函数

求大神!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中使用,函数所处源文件到底是什么意思??有例子可举更好 谢谢各位

提问者:慕后端6482527 2018-10-27 10:40

个回答

  • 坐觉长安空
    2018-11-13 20:15:59

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

  • CassanBob
    2018-10-27 20:54:38

    emm......

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