c语言自己写的头文件里面的函数定义为什么要加static
表示是静态函数只能在本文件调用不能在同工程中,其它C文件调用使用static可以避免不想被其它模块调用的函数调用同时,不同文件中的static函数可以重名减少命名难度。
C语言中Static和Extern的具体用法,有例子最好
泻药,这种问题最折磨人了,说一下我的看法不对勿喷,extern 有很多功能,如果 顺序是 int a=2; extern int a;这时候编译器理解extern为引用变量,所以当int a=2;改为static int a=2;
不会出现问题,但是顺序变为 extern int a;static int a=2;extern的职能就是声明变量a,声明了变量a,(区别正常的int a,定义)u有声明就需要有定义,但后后面却定义了static int,所以编译认为a变量只有申明没有定义,自然报错了。
C语言static可以用什么代替
最主要有两点用途。
1. 让一个变量长期有效,而不管其是在什么地方被申明。比如:
int fun1()
{
static int s_value = 0;
....
}
那么fun1不管在什么地方被调用,当函数退出后,s_value最后的值将一直会被系统保存(相当于一个全局变量),下次s_value再被用到时,也即当fun1()再次被调用时,s_value初始值将是最近被保存过的值(请注意s_value初始化操作只会被执行一次,即上述s_value =0 这个语句)。
2.避免多个文件使用了相同的变量名而导致冲突
比如有多个文件,分别由几个人独立开发的。假定他们在各自的文件中定义相同的“全局”变量名(仅仅指在他们独自的文件中全局),当系统集成时,由于他们使用了名字一样的“全局”变量,导致有难于遇见的问题。解决这个问题方便的做法就是在各自文件中,在相同的全局变量申明前加上static修饰符。这样系统就会为他们分配不同的内存,互不影响了
在C语言中,static关键字可以用其他方式来实现相同的功能。可以使用全局变量来替代静态变量,或者使用函数内的static变量来保持其作用域仅限于该函数。
此外,可以使用宏定义来替代静态常量,或者使用局部变量和指针来模拟静态数组的功能。
另外,也可以通过多文件编程来达到静态函数和静态全局变量的效果,将其声明为static并将其定义放在单独的源文件中,然后在需要的文件中引用。总之,虽然C语言中没有直接的替代方法,但是可以通过不同的方式来实现相同的功能。

