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

[复制链接]
5562|14
 楼主| bhsdlmj 发表于 2009-11-10 10:44 | 显示全部楼层 |阅读模式
在keil编译环境下,函数原型加static和不加static的区别?
草履虫 发表于 2009-11-10 11:05 | 显示全部楼层
如果是全局变量,基本不没有关系。
1. static 用在函数内部,只初始化一次,下次进来的时候的状态与之前的状态一样,相当于是全局的变量的特性,只是不能被其他函数使用。
2. 如果用在某个*.C中,其有效的作用域仅限于本文件。
草履虫 发表于 2009-11-10 11:06 | 显示全部楼层
函数与变量一样。
 楼主| bhsdlmj 发表于 2009-11-10 11:26 | 显示全部楼层
呵呵,我问的是函数原型!!不是函数!!
 楼主| bhsdlmj 发表于 2009-11-10 11:26 | 显示全部楼层
加不加都一样的!!!我只想确认一下!!!
xlsbz 发表于 2009-11-10 11:28 | 显示全部楼层
函数原型加static只给人看的,没有什么用,编译器不认这个
,编译器忽略它的存在
desert_hawk 发表于 2009-11-10 11:39 | 显示全部楼层
函数加static不能被其他文件调用。
hello-guy 发表于 2009-11-10 11:43 | 显示全部楼层
函数加static 意味着,只能在本xxx.c文件使用;
说白了其他xxx.c 文件无法用extern来声明然后调用它
xlsbz 发表于 2009-11-10 11:53 | 显示全部楼层
楼主说的是函数原型,不是说函数
desert_hawk 发表于 2009-11-10 12:50 | 显示全部楼层
本帖最后由 desert_hawk 于 2009-11-10 12:54 编辑

函数定义时加static不能被其他文件调用。
xlsbz 发表于 2009-11-10 13:29 | 显示全部楼层
楼上的各位啊 基础还是不牢固啊

函数原型加不加都一样
lxyppc 发表于 2009-11-10 14:05 | 显示全部楼层
呵呵,楼上激动了
你说的是extern
extern 对于函数原型加不加都一样

static加与不加是不一样的
xlsbz 发表于 2009-11-10 14:22 | 显示全部楼层
呵呵,楼上激动了
你说的是extern吧
extern 对于函数原型加不加都一样

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


static加与不加是一样的
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才能编译通过
一般首席 发表于 2013-3-18 10:24 | 显示全部楼层
学习了 谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

55

主题

351

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部