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

extern和static

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

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

举报

10个回答
toofree 回答时间: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

查看全部评分

bargagebaobei 回答时间: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 回答时间:2018-3-6 14:22:03
extern是不同文件之间调用变量或者函数时,在调用者所在文件必须声明的,意思就是告诉编译器这个变量或者函数不在本文件,而是在外部的其他文件。这样编译器编译当前文件的时候就会去其他的.o文件中找到该变量或者文件。
static是静态的变量或者函数,它的声明周期在程序复位之前都有效。
所以可以认为extern扩展了变量或者函数的空间属性,而static扩展了变量或者函数的时间属性。

评分

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

查看全部评分

12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版