免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2262 | 回复: 2
打印 上一主题 下一主题

[函数] 请教一下,关于static的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-15 16:14 |只看该作者 |倒序浏览
最近在看一些C语言的数据,发现一个现象。
几乎所有用到的函数都定义为了 static void 类型。
请问这是为什么?

是不是使用static可以避免定义的函数名与系统函数名冲突?

谢谢大家!

论坛徽章:
3
巳蛇
日期:2013-10-03 10:41:48申猴
日期:2014-07-29 16:12:04天蝎座
日期:2014-08-21 09:24:52
2 [报告]
发表于 2011-11-15 16:21 |只看该作者
static修饰的函数只在本文件内可见。

论坛徽章:
0
3 [报告]
发表于 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
他们作用的是不同的模块
以上是个人的一点经验,可能大家会有不同看法,欢迎探讨
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP