Chinaunix
标题:
请教一下,关于static的问题。
[打印本页]
作者:
Mr_Yao
时间:
2011-11-15 16:14
标题:
请教一下,关于static的问题。
最近在看一些C语言的数据,发现一个现象。
几乎所有用到的函数都定义为了 static void 类型。
请问这是为什么?
是不是使用static可以避免定义的函数名与系统函数名冲突?
谢谢大家!
作者:
pandaiam
时间:
2011-11-15 16:21
static修饰的函数只在本文件内可见。
作者:
keytounix
时间:
2011-11-16 18:35
static修饰,是为了在本模块内可见
这个包含俩层意思
1. 是对于一个函数,比如static void test();该函数存放 位置是 test.c
那么这个函数仅仅对于test.c里面的函数是可见的,模块可见是指test.c
2. 对于一些变量,
如下
//fo.c
int fo()
{
{
static int i=1;
//do somthing
}
{
static int i=10;
//do somting
}
}
这俩个i是不同的i
编译器会为他们分配不同的空间
对于模块可见,是指他们各自所在的{}
你可以编译成汇编语言然后验证
//gcc -S fo.c
你会发现俩个不同的i
i.x
i.y
他们作用的是不同的模块
以上是个人的一点经验,可能大家会有不同看法,欢迎探讨
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2