/*
我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??
这就是: 函数的跨文件调用问题!
C 语言规定,所有的函数,在没有static保护的情况下,都可以跨文件调用!
C语言为什么要引出外部函数和内部函数机制???
他们是为了解决什么问题而提出的???
他们各有什么特点???
像全局变量一样,如何解决由于C语言允许的跨文件调用函数机制所带来的封装性问题呢???
即:如何实现在一个文件中定义的函数只能由本文件调用呢??
static函数机制:
解决了:
1.static 避免函数跨文件重名的问题
2.static 避免本个源文件的函数被外部所用
3.static加上以后,就叫内部函数,也叫静态函数
4.C语言如果没有static,那么就可以被外部所调用
*/
#include<stdio.h>
#include<stdlib.h>
void print()
{
printf("很好很强大");
}
void printstr(char *p)
{
printf("%s", p); //打印字符串
}
void main()
{
print();
printstr("锄禾日当午,学C真是苦");
system("pause");
我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??
这就是: 函数的跨文件调用问题!
C 语言规定,所有的函数,在没有static保护的情况下,都可以跨文件调用!
C语言为什么要引出外部函数和内部函数机制???
他们是为了解决什么问题而提出的???
他们各有什么特点???
像全局变量一样,如何解决由于C语言允许的跨文件调用函数机制所带来的封装性问题呢???
即:如何实现在一个文件中定义的函数只能由本文件调用呢??
static函数机制:
解决了:
1.static 避免函数跨文件重名的问题
2.static 避免本个源文件的函数被外部所用
3.static加上以后,就叫内部函数,也叫静态函数
4.C语言如果没有static,那么就可以被外部所调用
*/
#include<stdio.h>
#include<stdlib.h>
void print()
{
printf("很好很强大");
}
void printstr(char *p)
{
printf("%s", p); //打印字符串
}
void main()
{
print();
printstr("锄禾日当午,学C真是苦");
system("pause");
}
//另一个文件 anotherfun.c
#include<stdio.h>
#include<stdlib.h>
/*
我们知道一个大的程序不可能把所有的函数都写在一个文件里,而是要书写多个文件,那么问题来了,在另一个文件中的函数,这个文件然后调用呢??
这就是: 函数的跨文件调用问题!
像全局变量一样,如何解决由于C语言允许的跨文件调用函数机制所带来的封装性问题呢???
即:如何实现在一个文件中定义的函数只能由本文件调用呢??
*/
//print函数重名,C语言默认调用函数可以跨文件调用
static void print() //内部函数,anotherfun.c之外的外部文件无法调用,只有 anotherfun.c文件内可以调用。
{
printf("china is great");
}
/*
static 限定函数作用域机制解决了:
1.由于C语言允许的跨文件调用函数机制所带来的封装性问题
2.static避免了跨文件重名的问题。
static 又叫内部函数
*/