从链接、存储的角度去理解编译器对关键字的处理(static、extern等)

18 篇文章 0 订阅
5 篇文章 0 订阅

关于标识符的属性研究

链接属性

对于一个标识符而言,就链接角度分析,有external、internal、none,三种属性,如果整个工程处于一个文件,也就无所谓external了,在不同文件中需要相互引用时,会体现出external和internal的属性。None一般出现在函数中,比如定义的一个变量,因为其作用域仅限于函数,所以是作为独立个体,就比如在每个函数中使用for循环时,都可以定义 int i整个变量标示符。

一般 全局变量标示符,函数名标示符默认是external的属性,

那么 c中会有这个关键字与链接属性相关
Static、extern、

1、static 对于一个external属性的标识符,进行类似于c++类中的私有化,即其他文件不可以对其对象引用。这里需要注意的是,static的链接属性作用,只能对具有external属性的标识符作用,比如全局量,函数,而对none的链接属性,是不可使用的,因为static还具有存储类型的属性。
2、extern 只是对对象声明,没有定义的作用,在一个文件中,extern修饰一个标识符,只能说明,这个修饰符具有external的链接属性,其定义可能是在其他文件中

存储类型

一般存储类型是说明,变量存储的位置,比如cpu寄存器、.data段、堆栈区等,
相关的关键字有static、register、auto等
static的介绍有篇blog讲的比较好
C++中的static关键字:
http://blog.csdn.net/hackbuteer1/article/details/7487694
static用法小结:
http://blog.csdn.net/Kendiv/article/details/675941
register是告知编译器,存储到cpu寄存器
auto 默认堆栈区,比如一个函数中的变量

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值