static C 函数

来源:互联网 发布:制作图表的软件 编辑:程序博客网 时间:2024/09/21 09:20

a.c

#include<stdio.h>
static int i;
int j;
static void init()
{
   printf("init\n");
}
void callme()
{
  printf("call me\n");
}


b.c


#include<stdio.h>
extern  j;
extern  callme();
extern init();
int main()
{
  init();
  callme();
  printf("hello\n");
}


gcc a.c b.c

如果调用callme 没问题

但如果调用init就有问题

所以static函数在外部是不可用的,static 全局变量也是



但是在b.c中如果把a.c  include进来的话调用static函数或者全局变量是没有问题的,include相当于b.c也有了a.c的内容,例如:
b.c

#include<stdio.h>

#include "a.c"
//extern  j;
//extern  callme();
//extern init();
int main()
{
  init();
  callme();
  printf("hello\n");
}

预处理b.c为

gcc -E b.c

# 2 "b.c" 2
# 1 "a.c" 1


static int i;
int j;
static void init()
{
   printf("init\n");
}
void callme()
{
  printf("call me\n");
}
# 3 "b.c" 2






int main()
{
  init();
  callme();
  printf("hello\n");
}






原创粉丝点击