你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

extern和static

[复制链接]
琦子 提问时间:2018-3-5 17:03 /
本帖最后由 bargagebaobei 于 2018-3-14 10:47 编辑

在单片机C语言中,总是闹不明白他们的不同和用法
收藏 评论10 发布时间:2018-3-5 17:03

举报

10个回答
七哥 回答时间:2018-3-5 17:49:30
本帖最后由 toofree 于 2018-3-5 17:58 编辑

extern 如果要调用别的文件中的变量或者函数,必须用extern先声明一下。
static  静态变量或函数的修饰。所谓静态变量,就是一旦定义则常驻内存,不会随着函数执行完退出而从物理上释放空间。下次调用函数的时候,对应的变量地址还是上次那个地址,内容还是上次那个内容。
用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。
在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处:
<1> 其他文件中可以定义相同名字的函数,不会发生冲突。
<2> 静态函数不能被其他文件所用。


评分

参与人数 2ST金币 +2 蝴蝶豆 +4 收起 理由
zero99 + 4
MrJiu + 2 赞一个!

查看全部评分

butterflyspring 回答时间:2018-3-5 17:16:08
extern 调用其他.文件上的变量,编译后自动连接.static如果是函数,则声明函数只在本文件中生存.如果是函数中变量则是第一次调用申请一次,退出函数变量不删,下次进来变量维持之前的值.如果是全局,则是静态....百度一下比别人跟你说,映像会更深.

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

wenyangzeng 回答时间:2018-3-5 17:17:42
extern 可供外部调用变量的修饰
static 静态变量的修饰
楼主应该多仔细阅读C教程

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

板子粉丝 回答时间:2018-3-5 17:50:34
实际调试后,印象会更深刻

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

琦子 回答时间:2018-3-6 08:06:52
toofree 发表于 2018-3-5 17:49
extern 如果要调用别的文件中的变量或者函数,必须用extern先声明一下。
static  静态变量或函数的修饰。所 ...

解释的很详细 谢谢
wudianjun2001 回答时间:2018-3-6 09:17:12
一个是外部变量申明,一个是静态变量

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Johnson Cao 回答时间:2018-3-6 09:25:28
extern声明的变量和函数,必定有另外一个地方定义的.不然编译会报错.
static声明的函数,只能被同一文件中的函数调用.
static声明变量,有两个意思,在函数中的变量,是代表这是一个静态变量,静态变量是存在堆中,而不是栈中.
用static声明全局变量,和函数一个意思,只能被当前文件中的函数所访问.

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

kirbymore 回答时间:2018-3-6 09:32:59
修饰怎么理解?
Angel_YY_ST 回答时间:2018-3-6 14:22:03
提示: 作者被禁止或删除 内容自动屏蔽
无薪税绵 回答时间:2018-3-6 14:47:45
大家都说的对。

extern 是引用外部声明,说人话就是:当前文件中没有定义的,叫编译器到其它文件中找。

static 是静态的意思,说人话就是:我在一个函数中,定义了一个静态变量,
        其它的函数就无权操作这个静态变量了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版