打印

函数原型加static和不加static的区别?

[复制链接]
4317|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bhsdlmj|  楼主 | 2009-11-10 10:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
草履虫| | 2009-11-10 11:05 | 只看该作者
如果是全局变量,基本不没有关系。
1. static 用在函数内部,只初始化一次,下次进来的时候的状态与之前的状态一样,相当于是全局的变量的特性,只是不能被其他函数使用。
2. 如果用在某个*.C中,其有效的作用域仅限于本文件。

使用特权

评论回复
板凳
草履虫| | 2009-11-10 11:06 | 只看该作者
函数与变量一样。

使用特权

评论回复
地板
bhsdlmj|  楼主 | 2009-11-10 11:26 | 只看该作者
呵呵,我问的是函数原型!!不是函数!!

使用特权

评论回复
5
bhsdlmj|  楼主 | 2009-11-10 11:26 | 只看该作者
加不加都一样的!!!我只想确认一下!!!

使用特权

评论回复
6
xlsbz| | 2009-11-10 11:28 | 只看该作者
函数原型加static只给人看的,没有什么用,编译器不认这个
,编译器忽略它的存在

使用特权

评论回复
7
desert_hawk| | 2009-11-10 11:39 | 只看该作者
函数加static不能被其他文件调用。

使用特权

评论回复
8
hello-guy| | 2009-11-10 11:43 | 只看该作者
函数加static 意味着,只能在本xxx.c文件使用;
说白了其他xxx.c 文件无法用extern来声明然后调用它

使用特权

评论回复
9
xlsbz| | 2009-11-10 11:53 | 只看该作者
楼主说的是函数原型,不是说函数

使用特权

评论回复
10
desert_hawk| | 2009-11-10 12:50 | 只看该作者
本帖最后由 desert_hawk 于 2009-11-10 12:54 编辑

函数定义时加static不能被其他文件调用。

使用特权

评论回复
11
xlsbz| | 2009-11-10 13:29 | 只看该作者
楼上的各位啊 基础还是不牢固啊

函数原型加不加都一样

使用特权

评论回复
12
lxyppc| | 2009-11-10 14:05 | 只看该作者
呵呵,楼上激动了
你说的是extern
extern 对于函数原型加不加都一样

static加与不加是不一样的

使用特权

评论回复
13
xlsbz| | 2009-11-10 14:22 | 只看该作者
呵呵,楼上激动了
你说的是extern吧
extern 对于函数原型加不加都一样

static加与不加是不一样的
lxyppc 发表于 2009-11-10 14:05


static加与不加是一样的

使用特权

评论回复
14
lxyppc| | 2009-11-10 14:28 | 只看该作者
来一个比较好玩的例子
有一个工程,有两个C文件1.c和2.c,有一个头文件head.h,两个C文件都包含这个头文件
head.h中的内容为
static void OutputName();

1.c的内容为
void OutputName()
{
    printf(__FILE__);
}

2.c的内容为
void OutputName()
{
    printf(__FILE__);
}

在不同的文件中调用同一个函数OutputName()会得到不同的结果
可能有的编译器要求函数定义前也要加static才能编译通过

使用特权

评论回复
15
一般首席| | 2013-3-18 10:24 | 只看该作者
学习了 谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

351

帖子

0

粉丝