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