首页 > 学院 > 开发设计 > 正文

linux c static 和extern区别

2019-11-06 06:09:34
字体:
来源:转载
供稿:网友

今天在看一个源码的时候,发现对于static 和extern 还是不太理解,so 又stackoverflow一发,记录一下。

extern

linux c 中,extern对于variable和function是不一样的

variable

对于variable来说,extern就是一个声明,声明目标文件在链接

的时候把几个变量链接到一起,相当于超链接或者软连接是一个道理 是一个映射,在链接的时候映射到一起,达到分享变量的目的。extern 不会分配内存,需要先声明再分配内存才可以使用,所有引用该变量的 的文件引用同一个内存,在链接文件的全局初始化段里面。 而static就是和extern相反,static声明的变量只在自己文件内部 编译,不能被链接到别的文件。引用static声明的源文件,在编译的时 候会在每一个包含文件(static声明文件)中,生成一个副本从而达到 不分享变量的目的。

function

对于function来说,extern是function的默认声明,也就是外部可以

引用,如果不想被引用就用static修饰。相当于java/c++ 的public声明 static就是PRivate声明。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表