C语言--static修饰函数
2013-08-06 10:02
211 查看
在C语言中,static的字面意思很容易把我们导入歧途,其实它的作用有三条。介绍它的第一条也是最重要的一条:隐藏。当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。为理解这句话,我举例来说明。我们要同时编译两个源文件,一个是a.c,另一个是main.c。下面是a.c的内容
下面是main.c的内容
程序的运行结果是:A Hello你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏
char a = 'A'; // global variable void msg() { printf("Hello\n"); }
下面是main.c的内容
int main(void) { extern char a; // extern variable must be declared before use printf("%c ", a); (void)msg(); return 0; }
程序的运行结果是:A Hello你可能会问:为什么在a.c中定义的全局变量a和函数msg能在main.c中使用?前面说过,所有未加static前缀的全局变量和函数都具有全局可见性,其它的源文件也能访问。此例中,a是全局变量,msg是函数,并且都没有加static前缀,因此对于另外的源文件main.c是可见的。如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。Static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏
相关文章推荐
- c语言中用static修饰的函数与普通函数的区别
- C语言--static修饰函数
- C语言用static修饰函数的作用与原理
- C语言中 static修饰函数
- C语言:static作用(修饰函数、局部变量、全局变量)
- C语言 static和extern关键字 对函数的作用
- static作用(修饰函数、局部变量、全局变量)转自http://www.cnblogs.com/stoneJin/archive/2011/09/21/2183313.html
- static修饰全局变量 局部变量和函数时候的区别
- static作用(修饰函数、局部变量、…
- static作用(修饰函数、局部变量、全局变量)
- 【C语言】19-static和extern关键字1-对函数的作用
- 【C语言】19-static和extern关键字1-对函数的作用
- static作用(修饰函数、局部变量、全局变量)
- C++类中static修饰的函数的使用
- static作用(修饰函数、局部变量、全局变量)
- C语言学习入门 (七) 变量与函数,static和extern关键字
- static--修饰(局部变量、全局变量、函数)
- linux大量使用了static关键字用来修饰函数和结构体定义,为何?
- c语言中static 函数和普通函数的区别?
- C/C++中static 修饰变量和修饰函数时的不同