linux c static 和extern区别
来源:互联网 发布:java异常分类三大类 编辑:程序博客网 时间:2024/06/05 08:39
今天在看一个源码的时候,发现对于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声明。
0 0
- linux c static 和extern区别
- static、extern和extern "c"
- 【static&extern】static和extern的区别
- static和extern c
- 【C语言】C语言static和extern区别
- c/c++中static和extern用法和区别
- C语言中的auto、static、register和extern的区别
- C中的auto、static、register和extern的区别
- C中auto,static,register和extern的区别
- C中的auto、static、register和extern的区别
- C中的auto、static、register和extern的区别
- C中的auto、static、register和extern的区别
- static和extern的区别
- static和extern的区别
- static和extern的区别
- static和extern 的区别
- static和extern的区别
- static和extern 的区别
- 像素強度變換(convertTo)
- robotframework
- Mongodb源码分析--日志及持久化
- 1286: Number of numbers
- 交换两个变量值
- linux c static 和extern区别
- faster-RCNN相关博客
- 手机调试安卓代码时,看到debug信息的方法
- Feed设计与实现
- Windows下安装原生TensorFlow
- @ModelAttribute运用详解
- oracle提示TNS:无监听程序的解决办法
- 空指针异常
- Mongodb源码分析--插入记录及索引B树构建